From c3aa68079ddf3872052425a949a1c5ea496c98a0 Mon Sep 17 00:00:00 2001 From: tarunsinghofficial Date: Wed, 14 Aug 2024 20:10:51 +0530 Subject: [PATCH] updated the GoogleMap.svelte for dedupe, optional chaining --- src/components/map/GoogleMap.svelte | 32 ++++++++++------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/src/components/map/GoogleMap.svelte b/src/components/map/GoogleMap.svelte index f0f66bf..d241a2f 100644 --- a/src/components/map/GoogleMap.svelte +++ b/src/components/map/GoogleMap.svelte @@ -55,8 +55,9 @@ async function loadStopsAndAddMarkers(lat, lng) { const json = await loadStopsForLocation(lat, lng); - const stops = json.data.list; - allStops = [...allStops, ...stops]; + const newStops = json.data.list; + + allStops = [...new Map([...allStops, ...newStops].map((stop) => [stop.id, stop])).values()]; clearAllMarkers(); @@ -64,29 +65,20 @@ const stopsToShow = allStops.filter((s) => s.routeIds.includes(selectedRoute.id)); stopsToShow.forEach((s) => addMarker(s)); } else { - stops.forEach((s) => addMarker(s)); + newStops.forEach((s) => addMarker(s)); } } function clearAllMarkers() { markers.forEach(({ marker, overlay, element }) => { - if (marker) { - marker.setMap(null); - } + marker?.setMap(null); + if (overlay) { - if (overlay.map) { - overlay.map = null; - } - if (overlay.draw) { - overlay.draw = () => {}; - } - if (overlay.onRemove) { - overlay.onRemove(); - } - } - if (element && element.parentNode) { - element.parentNode.removeChild(element); + overlay.setMap(null); + overlay.draw = () => {}; + overlay.onRemove?.(); } + element?.parentNode?.removeChild(element); }); markers = []; } @@ -147,9 +139,7 @@ this.getPanes().overlayMouseTarget.appendChild(container); }; overlay.onRemove = function () { - if (container.parentNode) { - container.parentNode.removeChild(container); - } + container?.parentNode?.removeChild(container); }; markers.push({ s, marker, overlay, element: container }); }