๐Ÿ”ง API_

โš ๏ธ Kakao Map ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ์š”์•ฝ – ์ง€๋„๋Š” ๋–ด์ง€๋งŒ, ์ •๋ณด๋Š” ์—†์—ˆ๋‹ค

CodeLoge 2025. 5. 28. 20:15

๐Ÿ› ๏ธ 1. InfoWindow๋Š” ๋–ด๋Š”๋ฐ, ํŽธ์˜์  ์ •๋ณด๋Š” ์•ˆ ๋ณด์ž„

 

โ“ ํ˜„์ƒ
๋งˆ์ปค ํด๋ฆญ ์‹œ InfoWindow๋Š” ์—ด๋ฆฌ์ง€๋งŒ, ํŽธ์˜์  ์ด๋ฆ„๊ณผ ์ฃผ์†Œ๊ฐ€ ๋น„์–ด ์žˆ๊ฑฐ๋‚˜ undefined๋กœ ํ‘œ์‹œ๋จ

โ‰๏ธ ์›์ธ
์นด์นด์˜ค ์žฅ์†Œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์—์„œ road_address_name์ด ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด, undefined๋กœ ํ‘œ์‹œ๋จ
๋˜ํ•œ place.y, place.x์˜ ์ขŒํ‘œ ๊ฐ’์„ kakao.maps.LatLng์— ๋„˜๊ธฐ์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์ถœ๋ ฅํ•˜๋Š” ์‹ค์ˆ˜๋„ ์žˆ์—ˆ์Œ

โœ… ํ•ด๊ฒฐ
์ฃผ์†Œ ์ถœ๋ ฅ ์‹œ road_address_name || address_name ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ
์ขŒํ‘œ ๋ณ€ํ™˜ ์‹œ new kakao.maps.LatLng(place.y, place.x)๋กœ ๋ช…ํ™•ํžˆ ๊ฐ์ฒด ์ƒ์„ฑ ํ›„ ์‚ฌ์šฉ


๐Ÿ› ๏ธ 2. ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํŽธ์˜์ ์ด ์•„๋‹Œ, ๋ฐฐ์—ด ์ฒซ ๋ฒˆ์งธ๋งŒ ํ‘œ์‹œ๋จ

 

โ“ ํ˜„์ƒ
๊ฒ€์ƒ‰๋œ ํŽธ์˜์  ์ค‘ ์‚ฌ์šฉ์ž ์œ„์น˜์™€์˜ ๊ฑฐ๋ฆฌ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ํ•ญ์ƒ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ํŽธ์˜์ ์ด ์ง€๋„์— ํ‘œ์‹œ๋จ

โ‰๏ธ ์›์ธ
์ดˆ๊ธฐ closestPlace๋ฅผ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ๋กœ ์„ค์ •ํ•œ ํ›„, ๋‚˜๋จธ์ง€ ํŽธ์˜์ ๋“ค๊ณผ์˜ ๊ฑฐ๋ฆฌ ๋น„๊ต ๋กœ์ง์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์•„ ํ•ญ์ƒ ์ฒซ ๋ฒˆ์งธ ํŽธ์˜์ ๋งŒ ์„ ํƒ๋จ

โœ… ํ•ด๊ฒฐ
getDistance() ํ•จ์ˆ˜์—์„œ ํ•˜๋ฒ„์‚ฌ์ธ(Haversine) ๊ณต์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์œ„์น˜์™€ ๊ฐ ํŽธ์˜์  ๊ฐ„์˜ ์‹ค์ œ ๊ฑฐ๋ฆฌ(์ง€๊ตฌ ๊ณก๋ฅ  ๋ฐ˜์˜)๋ฅผ ๊ณ„์‚ฐ
→ ์ด ๊ฑฐ๋ฆฌ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ minDistance๋ฅผ ๊ฐฑ์‹ ํ•˜๋ฉฐ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํŽธ์˜์ ์„ ์ถ”์ 
→ ์ตœ์ข…์ ์œผ๋กœ closestPlace๋ฅผ ์‹ค์ œ ๊ฑฐ๋ฆฌ ๊ธฐ์ค€์œผ๋กœ ์ •ํ™•ํžˆ ์„ ํƒํ•˜๊ณ , ํ•ด๋‹น ์œ„์น˜์— ๋งˆ์ปค ๋ฐ InfoWindow ์ถœ๋ ฅ

๐Ÿ“Œ ๋ณด์™„ ์„ค๋ช…
ํ•˜๋ฒ„์‚ฌ์ธ ๊ณต์‹์€ ๋‘ ์œ„๊ฒฝ๋„ ์ขŒํ‘œ ๊ฐ„์˜ ๋Œ€์›๊ฑฐ๋ฆฌ(Great Circle Distance)๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต์‹์œผ๋กœ, Math.sin, Math.cos, Math.atan2 ๋“ฑ์„ ํ™œ์šฉํ•˜์—ฌ ๊ฑฐ๋ฆฌ ์˜ค์ฐจ๋ฅผ ์ตœ์†Œํ™”ํ•จ.


๐Ÿ› ๏ธ 3. GS ํŽ˜์ด์ง€์—์„œ CU ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ – ๋ธŒ๋žœ๋“œ ๊ตฌ๋ถ„ ์‹คํŒจ

โ“ ํ˜„์ƒ
ํ˜„์žฌ ๋ธŒ๋žœ๋“œ๊ฐ€ GS25์ธ ํŽ˜์ด์ง€์—์„œ ๊ฒ€์ƒ‰์ฐฝ์— CU๋ฅผ ์ž…๋ ฅํ•˜๋ฉด CU ํŽธ์˜์ ๋„ ๊ฒ€์ƒ‰๋˜์–ด ์ง€๋„์— ํ‘œ์‹œ๋จ

โ‰๏ธ ์›์ธ
searchStore() ํ•จ์ˆ˜์—์„œ currentBrand์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ keyword๋งŒ ํฌํ•จ๋˜๋ฉด ๋ชจ๋“  ๋ธŒ๋žœ๋“œ๊ฐ€ ๊ฒ€์ƒ‰ ๋Œ€์ƒ์ด ๋˜์—ˆ์Œ

โœ… ํ•ด๊ฒฐ
currentBrand ๊ฐ’๊ณผ ๊ฒ€์ƒ‰๋œ place_name์˜ ๋ธŒ๋žœ๋“œ๋ช…์„ ๋น„๊ตํ•˜๋Š” ์ •๊ทœ์‹ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ถ”๊ฐ€
์˜ˆ: new RegExp("^" + currentBrand + "\\b")๋ฅผ ์ด์šฉํ•ด ๋ธŒ๋žœ๋“œ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ๋งŒ ํ•„ํ„ฐ๋ง