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(() => {});
|
||||
}, [visible, droneFramesLoaded]);
|
||||
|
||||
// 시점/종점: 드론 첫/마지막 프레임에서 가장 가까운 역 이름
|
||||
// 시점/종점: 역사(category=역사) POI 중 km 최소/최대
|
||||
useEffect(() => {
|
||||
if (!droneFramesLoaded || !stations.length) return;
|
||||
const frames = allDroneFramesRef.current;
|
||||
if (!frames.length) return;
|
||||
const nearest = (f: DroneFrameBasic) => {
|
||||
let best = stations[0];
|
||||
let bestD = (f.lat - best.lat) ** 2 + (f.lon - best.lon) ** 2;
|
||||
for (let i = 1; i < stations.length; i++) {
|
||||
const d = (f.lat - stations[i].lat) ** 2 + (f.lon - stations[i].lon) ** 2;
|
||||
if (d < bestD) { best = stations[i]; bestD = d; }
|
||||
if (!stations.length || !pois.length) return;
|
||||
const validSt = stations.filter(s => stationKm(s.title) >= 0);
|
||||
if (!validSt.length) return;
|
||||
const stationPois = pois.filter(p => p.category === '\uC5ED\uC0AC'); // 역사
|
||||
if (!stationPois.length) return;
|
||||
let minKmPoi = stationPois[0], maxKmPoi = stationPois[0];
|
||||
let minK = poiKm(stationPois[0], validSt), maxK = minK;
|
||||
for (let i = 1; i < stationPois.length; i++) {
|
||||
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(nearest(frames[0]));
|
||||
setRouteEndTitle(nearest(frames[frames.length - 1]));
|
||||
}, [droneFramesLoaded, stations]);
|
||||
setRouteStartTitle(minKmPoi.title);
|
||||
setRouteEndTitle(maxKmPoi.title);
|
||||
}, [stations, pois]);
|
||||
|
||||
// Update current km and visible range based on currentTime
|
||||
useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user