From dda0da52c4f065a1698332082b72d3fd9aee86b8 Mon Sep 17 00:00:00 2001 From: joungmin Date: Thu, 12 Mar 2026 20:25:36 +0900 Subject: [PATCH] =?UTF-8?q?=EB=82=B4=EC=9C=84=EC=B9=98=20=ED=95=84?= =?UTF-8?q?=ED=84=B0=20=EB=AA=A8=EB=B0=94=EC=9D=BC=20=EB=A6=AC=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=A0=81=EC=9A=A9=20+=20=EB=B0=98=EA=B2=BD=204km?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - mapBounds 없을 때 userLoc 기준 ~4km 반경 필터링 - 내위치 ON 시 setUserLoc도 업데이트 Co-Authored-By: Claude Opus 4.6 --- frontend/src/app/page.tsx | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx index e93cbef..0e0298f 100644 --- a/frontend/src/app/page.tsx +++ b/frontend/src/app/page.tsx @@ -237,9 +237,16 @@ export default function Home() { if (cityFilter && parsed.city !== cityFilter) return false; if (districtFilter && parsed.district !== districtFilter) return false; } - if (boundsFilterOn && mapBounds) { - if (r.latitude < mapBounds.south || r.latitude > mapBounds.north) return false; - if (r.longitude < mapBounds.west || r.longitude > mapBounds.east) return false; + if (boundsFilterOn) { + if (mapBounds) { + if (r.latitude < mapBounds.south || r.latitude > mapBounds.north) return false; + if (r.longitude < mapBounds.west || r.longitude > mapBounds.east) return false; + } else { + // 지도가 없으면 (모바일 리스트 탭 등) userLoc 기준 ~2km 반경 + const dlat = r.latitude - userLoc.lat; + const dlng = r.longitude - userLoc.lng; + if (dlat * dlat + dlng * dlng > 0.0013) return false; // ~4km + } } return true; }).sort((a, b) => { @@ -878,7 +885,7 @@ export default function Home() { setDistrictFilter(""); if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( - (pos) => setRegionFlyTo({ lat: pos.coords.latitude, lng: pos.coords.longitude, zoom: 15 }), + (pos) => { setUserLoc({ lat: pos.coords.latitude, lng: pos.coords.longitude }); setRegionFlyTo({ lat: pos.coords.latitude, lng: pos.coords.longitude, zoom: 15 }); }, () => setRegionFlyTo({ lat: 37.498, lng: 127.0276, zoom: 15 }), { timeout: 5000 }, ); @@ -1075,7 +1082,7 @@ export default function Home() { setDistrictFilter(""); if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( - (pos) => setRegionFlyTo({ lat: pos.coords.latitude, lng: pos.coords.longitude, zoom: 15 }), + (pos) => { setUserLoc({ lat: pos.coords.latitude, lng: pos.coords.longitude }); setRegionFlyTo({ lat: pos.coords.latitude, lng: pos.coords.longitude, zoom: 15 }); }, () => setRegionFlyTo({ lat: 37.498, lng: 127.0276, zoom: 15 }), { timeout: 5000 }, );