fix: RoutePanel 시종점 역사(역사 카테고리) POI에서 km 최소/최대로 표시
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -93,23 +93,23 @@ export default function RoutePanel({ currentTime, visible, onSeek }: RoutePanelP
|
|||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
}, [visible, droneFramesLoaded]);
|
}, [visible, droneFramesLoaded]);
|
||||||
|
|
||||||
// 시점/종점: 드론 첫/마지막 프레임에서 가장 가까운 역 이름
|
// 시점/종점: 역사(category=역사) POI 중 km 최소/최대
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!droneFramesLoaded || !stations.length) return;
|
if (!stations.length || !pois.length) return;
|
||||||
const frames = allDroneFramesRef.current;
|
const validSt = stations.filter(s => stationKm(s.title) >= 0);
|
||||||
if (!frames.length) return;
|
if (!validSt.length) return;
|
||||||
const nearest = (f: DroneFrameBasic) => {
|
const stationPois = pois.filter(p => p.category === '\uC5ED\uC0AC'); // 역사
|
||||||
let best = stations[0];
|
if (!stationPois.length) return;
|
||||||
let bestD = (f.lat - best.lat) ** 2 + (f.lon - best.lon) ** 2;
|
let minKmPoi = stationPois[0], maxKmPoi = stationPois[0];
|
||||||
for (let i = 1; i < stations.length; i++) {
|
let minK = poiKm(stationPois[0], validSt), maxK = minK;
|
||||||
const d = (f.lat - stations[i].lat) ** 2 + (f.lon - stations[i].lon) ** 2;
|
for (let i = 1; i < stationPois.length; i++) {
|
||||||
if (d < bestD) { best = stations[i]; bestD = d; }
|
const k = poiKm(stationPois[i], validSt);
|
||||||
|
if (k >= 0 && k < minK) { minK = k; minKmPoi = stationPois[i]; }
|
||||||
|
if (k >= 0 && k > maxK) { maxK = k; maxKmPoi = stationPois[i]; }
|
||||||
}
|
}
|
||||||
return best.title;
|
setRouteStartTitle(minKmPoi.title);
|
||||||
};
|
setRouteEndTitle(maxKmPoi.title);
|
||||||
setRouteStartTitle(nearest(frames[0]));
|
}, [stations, pois]);
|
||||||
setRouteEndTitle(nearest(frames[frames.length - 1]));
|
|
||||||
}, [droneFramesLoaded, stations]);
|
|
||||||
|
|
||||||
// Update current km and visible range based on currentTime
|
// Update current km and visible range based on currentTime
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user