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:
29
utils/polylines/cleanupPolylinesForMemory.js
Normal file
29
utils/polylines/cleanupPolylinesForMemory.js
Normal file
@@ -0,0 +1,29 @@
|
||||
// /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);
|
||||
}
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user