내위치 필터 모바일 리스트 적용 + 반경 4km
- mapBounds 없을 때 userLoc 기준 ~4km 반경 필터링 - 내위치 ON 시 setUserLoc도 업데이트 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -237,9 +237,16 @@ export default function Home() {
|
|||||||
if (cityFilter && parsed.city !== cityFilter) return false;
|
if (cityFilter && parsed.city !== cityFilter) return false;
|
||||||
if (districtFilter && parsed.district !== districtFilter) return false;
|
if (districtFilter && parsed.district !== districtFilter) return false;
|
||||||
}
|
}
|
||||||
if (boundsFilterOn && mapBounds) {
|
if (boundsFilterOn) {
|
||||||
|
if (mapBounds) {
|
||||||
if (r.latitude < mapBounds.south || r.latitude > mapBounds.north) return false;
|
if (r.latitude < mapBounds.south || r.latitude > mapBounds.north) return false;
|
||||||
if (r.longitude < mapBounds.west || r.longitude > mapBounds.east) 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;
|
return true;
|
||||||
}).sort((a, b) => {
|
}).sort((a, b) => {
|
||||||
@@ -878,7 +885,7 @@ export default function Home() {
|
|||||||
setDistrictFilter("");
|
setDistrictFilter("");
|
||||||
if (navigator.geolocation) {
|
if (navigator.geolocation) {
|
||||||
navigator.geolocation.getCurrentPosition(
|
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 }),
|
() => setRegionFlyTo({ lat: 37.498, lng: 127.0276, zoom: 15 }),
|
||||||
{ timeout: 5000 },
|
{ timeout: 5000 },
|
||||||
);
|
);
|
||||||
@@ -1075,7 +1082,7 @@ export default function Home() {
|
|||||||
setDistrictFilter("");
|
setDistrictFilter("");
|
||||||
if (navigator.geolocation) {
|
if (navigator.geolocation) {
|
||||||
navigator.geolocation.getCurrentPosition(
|
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 }),
|
() => setRegionFlyTo({ lat: 37.498, lng: 127.0276, zoom: 15 }),
|
||||||
{ timeout: 5000 },
|
{ timeout: 5000 },
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user