- cleanupMarkers() Utility in /utils/common/cleanupMarkers.js erstellt - Marker-Cleanup in MapComponent.js vor createAndSetDevices() integriert - createAndSetDevices.js von Cleanup-Verantwortung befreit (reine Erzeugung) - setupPOIs.js erweitert um cleanupMarkers() vor Layer-Neuerstellung - poiUtils.js und markerUtils.js angepasst: cleanupMarkers() ersetzt .remove() - Memory Leaks durch verwaiste Tooltips, Events und Marker behoben - Grundlage für wiederverwendbare Marker-Cleanup-Logik für POIs, Geräte, Linien geschaffen
26 lines
725 B
JavaScript
26 lines
725 B
JavaScript
// /utils/common/cleanupMarkers.js
|
|
|
|
/**
|
|
* Entfernt alle Leaflet-Marker vollständig aus der Karte und aus OMS egal welche Typ sind
|
|
* @param {L.Marker[]} markers - Liste der Marker
|
|
* @param {object} oms - OverlappingMarkerSpiderfier-Instanz (optional)
|
|
*/
|
|
export const cleanupMarkers = (markers = [], oms = null) => {
|
|
markers.forEach(marker => {
|
|
// Tooltip und Popup entfernen
|
|
marker.unbindTooltip?.();
|
|
marker.unbindPopup?.();
|
|
|
|
// Event-Listener entfernen (zur Sicherheit)
|
|
marker.off?.();
|
|
|
|
// Marker von Karte entfernen
|
|
marker.remove?.();
|
|
|
|
// Marker aus OMS entfernen (wenn vorhanden)
|
|
if (oms && typeof oms.removeMarker === "function") {
|
|
oms.removeMarker(marker);
|
|
}
|
|
});
|
|
};
|