diff --git a/frontend/src/components/site-finder/SiteMap.tsx b/frontend/src/components/site-finder/SiteMap.tsx index 10cc3392..9c007246 100644 --- a/frontend/src/components/site-finder/SiteMap.tsx +++ b/frontend/src/components/site-finder/SiteMap.tsx @@ -144,7 +144,11 @@ export function SiteMap({ data, isochrones }: Props) { /> )} - {/* Isochrones — render in reverse order (largest range at bottom) */} + {/* Isochrones — render in reverse order (largest range at bottom). + NB: react-leaflet GeoJSON кэширует слой, не реагирует на смену + `data` prop. Включаем в key первую координату feature (она + различается между mode=foot/cycle/car и временем) — это + форсирует remount при пересчёте от ORS. */} {isochrones && [...isochrones.features].reverse().map((feature, idx) => { const seconds = @@ -159,9 +163,16 @@ export function SiteMap({ data, isochrones }: Props) { : minutes <= 20 ? "#3b82f6" : "#a855f7"; + // Hash из первой координаты — различает foot/cycle/car полигоны + const firstCoord = ( + feature.geometry as { coordinates?: number[][][] } + )?.coordinates?.[0]?.[0]; + const coordHash = firstCoord + ? `${firstCoord[0].toFixed(4)},${firstCoord[1].toFixed(4)}` + : `${idx}`; return (