diff --git a/CHANGELOG.md b/CHANGELOG.md index 37d7780..2990adc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ ## 2026-06-17 +### πŸ› NaverMap ν΄λŸ¬μŠ€ν„° 클릭 μ‹œ 쀑앙 이동 fix (v0.1.65) +- panTo(μ• λ‹ˆλ©”μ΄μ…˜) + setZoom(z, true)(μ• λ‹ˆλ©”μ΄μ…˜) 두 μ• λ‹ˆλ©”μ΄μ…˜ λ™μ‹œ 호좜이 μ„œλ‘œ cancel +- 단일 식당은 쀌 λ³€ν™” μ—†μ–΄μ„œ μ•ˆ λ³΄μ˜€κ³ , ν΄λŸ¬μŠ€ν„°λŠ” 쀌 크게 λ³€κ²½ β†’ 좩돌 κ°€μ‹œν™” +- NaverMap SDK의 `morph(latlng, zoom)` ν•œ λ©”μ„œλ“œλ‘œ 톡일 β€” center+zoom λ™μ‹œ λ³€κ²½ + ### 🎯 NaverMapView selected μžλ™ panTo + zoom (v0.1.64) - 마컀/ν΄λŸ¬μŠ€ν„°/리슀트 μ–΄λ””μ„œ 선택해도 κ·Έ 식당이 ν™”λ©΄ μ€‘μ•™μœΌλ‘œ + zoom 16 - GoogleMapViewμ—λŠ” 이미 있던 useEffect [selected] νŒ¨ν„΄μ„ λ™μΌν•˜κ²Œ μΆ”κ°€ diff --git a/frontend/src/components/NaverMapView.tsx b/frontend/src/components/NaverMapView.tsx index 56edc6b..284ff72 100644 --- a/frontend/src/components/NaverMapView.tsx +++ b/frontend/src/components/NaverMapView.tsx @@ -28,6 +28,7 @@ type NaverMapInstance = { getZoom: () => number; getBounds: () => { getNE: () => LatLng; getSW: () => LatLng }; panTo: (latlng: unknown, opts?: Record) => void; + morph: (latlng: unknown, zoom?: number, transitionOptions?: Record) => void; refresh: (noEffect?: boolean) => void; }; type NaverMarker = { @@ -231,21 +232,21 @@ export default function NaverMapView({ } }, [ready, flyTo, selected, onBoundsChanged]); - // flyTo λ³€κ²½ 반영 + // flyTo λ³€κ²½ 반영 β€” morph둜 panTo+setZoom 좩돌 νšŒν”Ό useEffect(() => { const m = mapRef.current; if (!m || !flyTo || !window.naver?.maps) return; - m.panTo(new window.naver.maps.LatLng(flyTo.lat, flyTo.lng)); - if (flyTo.zoom) m.setZoom(flyTo.zoom, true); + const latlng = new window.naver.maps.LatLng(flyTo.lat, flyTo.lng); + if (flyTo.zoom) m.morph(latlng, flyTo.zoom); + else m.panTo(latlng); }, [flyTo]); - // selected λ³€κ²½ μ‹œ μžλ™ panTo + zoom (GoogleMapView와 동일 λ™μž‘) + // selected λ³€κ²½ μ‹œ μžλ™ 쀑앙 + zoom useEffect(() => { const m = mapRef.current; if (!m || !selected || !window.naver?.maps) return; if (selected.latitude == null || selected.longitude == null) return; - m.panTo(new window.naver.maps.LatLng(selected.latitude, selected.longitude)); - m.setZoom(16, true); + m.morph(new window.naver.maps.LatLng(selected.latitude, selected.longitude), 16); }, [selected]); // ν΄λŸ¬μŠ€ν„° 계산 (bounds/zoom λ³€κ²½ μ‹œ) @@ -280,8 +281,7 @@ export default function NaverMapView({ }); naver.Event.addListener(marker, "click", () => { const z = Math.min(getExpansionZoom(cluster_id), 18); - m.panTo(new naver.LatLng(lat, lng)); - m.setZoom(z, true); + m.morph(new naver.LatLng(lat, lng), z); }); markersRef.current.push(marker); } else {