- 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
30 lines
828 B
JavaScript
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);
|
|
}
|
|
});
|
|
}
|