import { control, featureGroup, icon, map, Marker, marker, tileLayer, } from "leaflet"; import { MarkerClusterGroup } from "leaflet.markercluster"; import "leaflet.markercluster/dist/MarkerCluster.css"; import "leaflet.markercluster/dist/MarkerCluster.Default.css"; import "leaflet/dist/leaflet.css"; Marker.prototype.options.icon = icon({ iconRetinaUrl: "/assets/images/marker/marker-icon-2x.png", iconUrl: "/assets/images/marker/marker-icon.png", shadowUrl: "/assets/images/marker/marker-shadow.png", iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], tooltipAnchor: [16, -28], shadowSize: [41, 41], }); const drawEpisodesMap = async (mapDivId: string, dataUrl: string) => { const episodesMap = map(mapDivId).setView([48.858, 2.294], 13); tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", { maxZoom: 19, attribution: '© OpenStreetMap contributors', }).addTo(episodesMap); control.scale({ imperial: true, metric: true }).addTo(episodesMap); const data = await fetch(dataUrl).then((response) => response.json()); if (data.length > 0) { const markers = []; const cluster = new MarkerClusterGroup({ showCoverageOnHover: false }); for (let i = 0; i < data.length; i++) { const currentMarker = marker([ data[i].latitude, data[i].longitude, ]).bindPopup( '
" ); markers.push(currentMarker); cluster.addLayer(currentMarker); } episodesMap.addLayer(cluster); const group = featureGroup(markers); episodesMap.fitBounds(group.getBounds()); } }; const DrawEpisodesMaps = (): void => { const mapDivs: NodeListOf