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 }, );