Files
nodeMap/utils/polylines/cleanupPolylinesForMemory.js
ISA f7f7122620 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
2025-06-06 10:21:56 +02:00

30 lines
828 B
JavaScript

// /utils/polylines/cleanupPolylinesForMemory.js
/**
* Bereinigt Leaflet-Polylinien aus dem Speicher:
* - entfernt Event-Listener (off)
* - entfernt Tooltips (unbindTooltip)
* - entfernt Layer von der Karte (removeLayer)
*
* @param {L.Polyline[]} polylines - Liste der Leaflet-Polylinien
* @param {L.Map} map - Leaflet-Karteninstanz
*/
export function cleanupPolylinesForMemory(polylines = [], map) {
if (!Array.isArray(polylines)) return;
polylines.forEach(polyline => {
try {
// Events und Tooltip entfernen
polyline.off();
polyline.unbindTooltip?.();
// Von der Karte entfernen, wenn noch vorhanden
if (map && map.hasLayer(polyline)) {
map.removeLayer(polyline);
}
} catch (e) {
console.warn("Fehler beim Bereinigen einer Polyline:", e);
}
});
}