27 lines
687 B
TypeScript
27 lines
687 B
TypeScript
// src/components/MapBoundsManager.tsx
|
|
import React, { useEffect } from 'react';
|
|
import { useMap } from 'react-leaflet';
|
|
import L from 'leaflet';
|
|
import type { HeatmapPoint } from '../App';
|
|
|
|
interface MapBoundsManagerProps {
|
|
data: HeatmapPoint[];
|
|
}
|
|
|
|
const MapBoundsManager: React.FC<MapBoundsManagerProps> = ({ data }) => {
|
|
const map = useMap();
|
|
|
|
useEffect(() => {
|
|
if (data && data.length > 0) {
|
|
const bounds = L.latLngBounds(data.map(p => [p.lat, p.lon]));
|
|
if (bounds.isValid()) {
|
|
map.fitBounds(bounds, { padding: [50, 50] });
|
|
}
|
|
}
|
|
}, [data, map]);
|
|
|
|
return null; // This component does not render anything
|
|
};
|
|
|
|
export default MapBoundsManager;
|