feat: Marker-Cleanup zur Vermeidung von Memory Leaks implementiert
- 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
This commit is contained in:
25
utils/common/cleanupMarkers.js
Normal file
25
utils/common/cleanupMarkers.js
Normal file
@@ -0,0 +1,25 @@
|
||||
// /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);
|
||||
}
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user