๋ฐ˜์‘ํ˜•

javascript ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ

ํ•ด๋‹น ๊ธ€ 5๊ฑด

querySelectorAll() ์€ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ “๋ฐฐ์—ด์ด ์•„๋‹ˆ๋‹ค.”๊ทธ๋ž˜์„œ map(), filter() ๊ฐ™์€ ๋ฐฐ์—ด ์ „์šฉ ๋ฉ”์„œ๋“œ๋ฅผ ์“ธ ์ˆ˜ ์—†๋‹ค. Array.from() ์œผ๋กœ ์ง„์งœ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.1) querySelectorAll()์˜ ๋ฐ˜ํ™˜๊ฐ’์€ “NodeList”์˜ˆ๋ฅผ ๋“ค์–ด:const checked = document.querySelectorAll(".row-check:checked");checked ๋Š” ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋‹ค.์ •ํ™•ํ•œ ํƒ€์ž…์€ NodeList ๋ผ๋Š” “์œ ์‚ฌ๋ฐฐ์—ด ๊ฐ์ฒด”.์œ ์‚ฌ๋ฐฐ์—ด์ด๋ž€:๊ธธ์ด(length) ์žˆ์Œ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ๋‹ด๊ณ  ์žˆ์Œํ•˜์ง€๋งŒ,map() ์—†์Œfilter() ์—†์Œreduce() ์—†์Œ์ฆ‰, ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์ƒ๊ฒผ์ง€๋งŒ ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋‹ค.2) NodeList์™€ ๋ฐฐ์—ด(Array)์˜ ์ฐจ..

ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋””๋ฐ”์šด์Šค ํ•จ์ˆ˜๋ฅผ ์ ‘ํ•ด๋ณด์‹  ์  ์žˆ๋‚˜์š”?์Šคํฌ๋กค, ๊ฒ€์ƒ‰์ฐฝ ์ž…๋ ฅ, ์œˆ๋„์šฐ ๋ฆฌ์‚ฌ์ด์ฆˆ์ฒ˜๋Ÿผ ์งง์€ ์‹œ๊ฐ„์— ๋ฐ˜๋ณตํ•ด์„œ ํ˜ธ์ถœ๋˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ๋ชจ์•„์„œ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.debounce()๋ž€?์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐ˜๋ณต ๋ฐœ์ƒํ•ด๋„, ๋งˆ์ง€๋ง‰ ํ˜ธ์ถœ๋งŒ ์‹คํ–‰๋˜๊ฒŒ ํ•˜๋Š” ํ•จ์ˆ˜ ์ œ์–ด ๊ธฐ๋ฒ•์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒ€์ƒ‰์ฐฝ์— ๊ธ€์ž๋ฅผ ์ž…๋ ฅํ•  ๋•Œ๋งˆ๋‹ค API๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์–ด์š”.์ด๋•Œ debounce()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž…๋ ฅ์ด ๋ฉˆ์ถ˜ ํ›„ ํŠน์ • ์‹œ๊ฐ„(์˜ˆ: 300ms)์ด ์ง€๋‚˜๋ฉด ๋”ฑ ํ•œ ๋ฒˆ API๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.debounce()๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ๋‹ค์Œ๊ณผ ๊ฐ™์ด “๋„ˆ๋ฌด ์ž์ฃผ ์‹คํ–‰๋˜๋Š” ์ด๋ฒคํŠธ”์—์„œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. :์‹ค์‹œ๊ฐ„ ๊ฒ€์ƒ‰ API ํ˜ธ์ถœ์œˆ๋„์šฐ ๋ฆฌ์‚ฌ์ด์ฆˆ ์ด๋ฒคํŠธ์Šคํฌ๋กค ์ด๋ฒคํŠธ(๋ฌดํ•œ ์Šคํฌ๋กค, ์Šคํฌ๋กค ์œ„์น˜ ์ €..

DOM์—์„œ ์š”์†Œ๋ฅผ ํด๋ฆญํ•  ๋•Œ ์‹คํ–‰๋˜๋Š” ์ด๋ฒคํŠธ๋Š” **์ž์‹ → ๋ถ€๋ชจ๋กœ ์ „ํŒŒ(๋ฒ„๋ธ”๋ง)**๋ฉ๋‹ˆ๋‹ค.์ด ํŠน์„ฑ์„ ์ด์šฉํ•ด์„œ, “์—ฌ๋Ÿฌ ์ž์‹ ์š”์†Œ๋งˆ๋‹ค ์ด๋ฒคํŠธ๋ฅผ ๋ถ™์ด์ง€ ์•Š๊ณ  ๋ถ€๋ชจ ํ•˜๋‚˜์— ์ด๋ฒคํŠธ๋ฅผ ๋งก๊ธฐ๋Š” ๋ฐฉ์‹”์„ **์ด๋ฒคํŠธ ์œ„์ž„(Event Delegation)**์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.1. ๊ธฐ์กด ๋ฐฉ์‹: ์š”์†Œ๋งˆ๋‹ค ์ด๋ฒคํŠธ ์ง์ ‘ ๋“ฑ๋กdeleteBtn.addEventListener("click", function(){ newDiv.remove();})โœ” ๋™์ž‘ ๋ฐฉ์‹์นด๋“œ 1๊ฐœ ์ƒ์„ฑ → ์‚ญ์ œ ๋ฒ„ํŠผ 1๊ฐœ → ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ 1๊ฐœ์นด๋“œ 100๊ฐœ ์ƒ์„ฑ → ์‚ญ์ œ ๋ฒ„ํŠผ 100๊ฐœ → ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ 100๊ฐœ์ฆ‰, ์š”์†Œ ๊ฐœ์ˆ˜๋งŒํผ ์ด๋ฒคํŠธ๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค. ์ด ๋ฐฉ์‹์˜ ๋ฌธ์ œ์ :์นด๋“œ 100๊ฐœ๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋„ 100๊ฐœ ์ƒ๊น€์„ฑ๋Šฅ ๋–จ์–ด์ง€๊ณ  ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์ง๋™์ ์œผ๋กœ ์ถ”๊ฐ€๋œ ์š”์†Œ๋Š”..

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ๋ฐฉ์‹์— ๋”ฐ๋ผ ์Šค์ฝ”ํ”„(์œ ํšจ ๋ฒ”์œ„)๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. var : ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„(function scope)let, const : ๋ธ”๋ก ์Šค์ฝ”ํ”„(block scope)์—ฌ๊ธฐ์„œ "์Šค์ฝ”ํ”„"๋Š” ๊ทธ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์˜ ๋ฒ”์œ„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„๋ž€?var๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ์ „์ฒด์—์„œ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.์ฆ‰, if, for, { } ๊ฐ™์€ ๋ธ”๋ก({}) ๋‚ด๋ถ€์— ์„ ์–ธํ•ด๋„ ๋ธ”๋ก ๋ฐ–์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋ก ์Šค์ฝ”ํ”„๋ž€?let์ด๋‚˜ const๋Š” ํ•ด๋‹น ๋ธ”๋ก({}) ์•ˆ์—์„œ๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ECMAScript 2015(ES6)์—์„œ ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.์˜ˆ์ œ(1) var๋Š” ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„if (true) { var x = 5;}console.log(x); // 5 var x๋Š” if๋ฌธ ๋ธ”๋ก {} ์•ˆ์—์„œ ์„ ์–ธ๋์ง€๋งŒ,์ž๋ฐ”์Šค..

1. ๊ธฐ๋ณธ ์ฒ ํ•™Leaflet"๊ฐ€๋ณ๊ณ  ๊ฐ„๋‹จ"์„ ๋ชฉํ‘œ๋กœ ๋งŒ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌํ•ต์‹ฌ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณต (ํƒ€์ผ๋งต, ๋งˆ์ปค, ํŒ์—…, GeoJSON ํ‘œ์‹œ ๋“ฑ)ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒํƒœ๊ณ„๊ฐ€ ํ’๋ถ€ํ•ด์„œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ๋ถ™์ด๋Š” ๋ฐฉ์‹OpenLayers"์˜ฌ์ธ์›" GIS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฒกํ„ฐ/๋ž˜์Šคํ„ฐ, ์ขŒํ‘œ ๋ณ€ํ™˜, ์Šคํƒ€์ผ๋ง, WMS/WFS ๊ฐ™์€ ๊ณ ๊ธ‰ GIS ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ ๋‚ด์žฅ๊ธฐ๋Šฅ์€ ๋งŽ์ง€๋งŒ ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ์žˆ์Œ2. ์„ฑ๋ŠฅLeaflet๊ฐ€๋ณ๊ณ  ๋น ๋ฅด์ง€๋งŒ, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ(์ˆ˜๋งŒ ๊ฐœ ํ”ผ์ฒ˜)๋ฅผ ๋‹ค๋ฃฐ ๋•Œ๋Š” ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์ƒ๊น€๋ชจ๋ฐ”์ผ ์ตœ์ ํ™”๊ฐ€ ์ž˜ ๋ผ ์žˆ์Œ OpenLayers๋ณต์žกํ•œ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ (์ˆ˜๋งŒ~์ˆ˜์‹ญ๋งŒ ํ”ผ์ฒ˜)WebGL ๊ธฐ๋ฐ˜ ๋ Œ๋”๋ง ์ง€์› → ์„ฑ๋Šฅ์ ์œผ๋กœ ๋” ๊ฐ•๋ ฅ3. ์ขŒํ‘œ๊ณ„/ํˆฌ์˜๋ฒ•Leaflet๊ธฐ๋ณธ์ด EPSG:3857(Web Mercator)๋‹ค๋ฅธ ์ขŒํ‘œ๊ณ„ ์ง€์›์€ ์ œํ•œ์  → proj4j..

๋ฐ˜์‘ํ˜•