fix: alle Markers/Stationen Icons aktualisieren aber ohne Plus Icon für Überlappende icons
This commit is contained in:
@@ -753,183 +753,73 @@ await fetchGisStationsStatusDistrict(mapGisStationsStatusDistrictUrl, setGisStat
|
|||||||
const sonstigeMarkersLayerRef = useRef(null);
|
const sonstigeMarkersLayerRef = useRef(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!gisSystemStaticLoaded || !map) return; // Sicherstellen, dass alle Abhängigkeiten geladen sind
|
if (!gisSystemStaticLoaded || !map) return; // Sicherstellen, dass die Karte und Daten geladen sind
|
||||||
|
|
||||||
// Initialisiere die LayerGroups, falls noch nicht vorhanden
|
const layerGroups = [
|
||||||
if (!gmaLayerRef.current) {
|
{ ref: gmaLayerRef, id: 11, setState: setGmaMarkers },
|
||||||
gmaLayerRef.current = new L.LayerGroup().addTo(map);
|
{ ref: talasLayerRef, id: 1, setState: setTalasMarkers },
|
||||||
}
|
{ ref: eciMarkersLayerRef, id: 2, setState: setEciMarkers },
|
||||||
if (!talasLayerRef.current) {
|
{ ref: gsmModemMarkersLayerRef, id: 5, setState: setGsmModemMarkers },
|
||||||
talasLayerRef.current = new L.LayerGroup().addTo(map);
|
{ ref: ciscoRouterMarkersLayerRef, id: 6, setState: setCiscoRouterMarkers },
|
||||||
}
|
{ ref: wagoMarkersLayerRef, id: 7, setState: setWagoMarkers },
|
||||||
if (!eciMarkersLayerRef.current) {
|
{ ref: siemensMarkersLayerRef, id: 8, setState: setSiemensMarkers },
|
||||||
eciMarkersLayerRef.current = new L.LayerGroup().addTo(map);
|
{ ref: otdrMarkersLayerRef, id: 9, setState: setOtdrMarkers },
|
||||||
}
|
{ ref: wdmMarkersLayerRef, id: 10, setState: setWdmMarkers },
|
||||||
if (!gsmModemMarkersLayerRef.current) {
|
{ ref: messstellenMarkersLayerRef, id: 13, setState: setMessstellenMarkers },
|
||||||
gsmModemMarkersLayerRef.current = new L.LayerGroup().addTo(map);
|
{ ref: talasiclMarkersLayerRef, id: 100, setState: setTalasiclMarkers },
|
||||||
}
|
{ ref: dauzMarkersLayerRef, id: 110, setState: setDauzMarkers },
|
||||||
if (!ciscoRouterMarkersLayerRef.current) {
|
{ ref: smsfunkmodemMarkersLayerRef, id: 111, setState: setSmsfunkmodemMarkers },
|
||||||
ciscoRouterMarkersLayerRef.current = new L.LayerGroup().addTo(map);
|
{ ref: ulafMarkersLayerRef, id: 0, setState: setUlafMarkers },
|
||||||
}
|
{ ref: sonstigeMarkersLayerRef, id: 200, setState: setSonstigeMarkers },
|
||||||
if (!wagoMarkersLayerRef.current) {
|
];
|
||||||
wagoMarkersLayerRef.current = new L.LayerGroup().addTo(map);
|
|
||||||
}
|
|
||||||
if (!siemensMarkersLayerRef.current) {
|
|
||||||
siemensMarkersLayerRef.current = new L.LayerGroup().addTo(map);
|
|
||||||
}
|
|
||||||
if (!otdrMarkersLayerRef.current) {
|
|
||||||
otdrMarkersLayerRef.current = new L.LayerGroup().addTo(map);
|
|
||||||
}
|
|
||||||
if (!wdmMarkersLayerRef.current) {
|
|
||||||
wdmMarkersLayerRef.current = new L.LayerGroup().addTo(map);
|
|
||||||
}
|
|
||||||
if (!messstellenMarkersLayerRef.current) {
|
|
||||||
messstellenMarkersLayerRef.current = new L.LayerGroup().addTo(map);
|
|
||||||
}
|
|
||||||
if (!talasiclMarkersLayerRef.current) {
|
|
||||||
talasiclMarkersLayerRef.current = new L.LayerGroup().addTo(map);
|
|
||||||
}
|
|
||||||
if (!dauzMarkersLayerRef.current) {
|
|
||||||
dauzMarkersLayerRef.current = new L.LayerGroup().addTo(map);
|
|
||||||
}
|
|
||||||
if (!smsfunkmodemMarkersLayerRef.current) {
|
|
||||||
smsfunkmodemMarkersLayerRef.current = new L.LayerGroup().addTo(map);
|
|
||||||
}
|
|
||||||
if (!ulafMarkersLayerRef.current) {
|
|
||||||
ulafMarkersLayerRef.current = new L.LayerGroup().addTo(map);
|
|
||||||
}
|
|
||||||
if (!sonstigeMarkersLayerRef.current) {
|
|
||||||
sonstigeMarkersLayerRef.current = new L.LayerGroup().addTo(map);
|
|
||||||
}
|
|
||||||
|
|
||||||
const updateGmaMarkers = () => {
|
// Initialisiere LayerGroups nur einmal
|
||||||
// Alte Marker entfernen
|
layerGroups.forEach(({ ref }) => {
|
||||||
gmaLayerRef.current.clearLayers();
|
if (!ref.current) {
|
||||||
|
ref.current = new L.LayerGroup().addTo(map);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Neue Marker für jedes System erstellen
|
const updateMarkers = ({ ref, id, setState }) => {
|
||||||
createAndSetDevices(11, setGmaMarkers, GisSystemStatic, priorityConfig);
|
if (ref.current) {
|
||||||
};
|
ref.current.clearLayers(); // Entferne alte Marker
|
||||||
|
}
|
||||||
|
|
||||||
const updateTalasMarkers = () => {
|
// Erstelle und füge neue Marker hinzu
|
||||||
// Alte Marker aus der LayerGroup entfernen
|
|
||||||
talasLayerRef.current.clearLayers();
|
|
||||||
|
|
||||||
// Neue Marker hinzufügen
|
|
||||||
createAndSetDevices(
|
createAndSetDevices(
|
||||||
1,
|
id,
|
||||||
(newMarkers) => {
|
(newMarkers) => {
|
||||||
setTalasMarkers(newMarkers); // Update State
|
setState(newMarkers); // Zustand aktualisieren
|
||||||
newMarkers.forEach((marker) => talasLayerRef.current.addLayer(marker)); // Füge Marker zur LayerGroup hinzu
|
newMarkers.forEach((marker) => ref.current.addLayer(marker)); // Marker zur LayerGroup hinzufügen
|
||||||
|
|
||||||
// Überprüfe auf überlappende Marker und füge das Plus-Icon hinzu
|
|
||||||
checkOverlappingMarkers(map, newMarkers, plusRoundIcon);
|
|
||||||
},
|
},
|
||||||
GisSystemStatic,
|
GisSystemStatic,
|
||||||
priorityConfig
|
priorityConfig
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateEciMarkers = () => {
|
// Aktualisiere alle Marker-Gruppen
|
||||||
eciMarkersLayerRef.current.clearLayers();
|
const updateAllMarkers = () => {
|
||||||
createAndSetDevices(2, setEciMarkers, GisSystemStatic, priorityConfig);
|
layerGroups.forEach(updateMarkers);
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateGsmModemMarkers = () => {
|
// Initiales Update
|
||||||
gsmModemMarkersLayerRef.current.clearLayers();
|
updateAllMarkers();
|
||||||
createAndSetDevices(5, setGsmModemMarkers, GisSystemStatic, priorityConfig);
|
|
||||||
};
|
|
||||||
|
|
||||||
const updateCiscoRouterMarkers = () => {
|
// Setze ein Intervall für regelmäßige Updates
|
||||||
ciscoRouterMarkersLayerRef.current.clearLayers();
|
const intervalId = setInterval(() => {
|
||||||
createAndSetDevices(6, setCiscoRouterMarkers, GisSystemStatic, priorityConfig);
|
updateAllMarkers();
|
||||||
};
|
|
||||||
|
|
||||||
const updateWagoMarkers = () => {
|
|
||||||
wagoMarkersLayerRef.current.clearLayers();
|
|
||||||
createAndSetDevices(7, setWagoMarkers, GisSystemStatic, priorityConfig);
|
|
||||||
};
|
|
||||||
|
|
||||||
const updateSiemensMarkers = () => {
|
|
||||||
siemensMarkersLayerRef.current.clearLayers();
|
|
||||||
createAndSetDevices(8, setSiemensMarkers, GisSystemStatic, priorityConfig);
|
|
||||||
};
|
|
||||||
|
|
||||||
const updateOtdrMarkers = () => {
|
|
||||||
otdrMarkersLayerRef.current.clearLayers();
|
|
||||||
createAndSetDevices(9, setOtdrMarkers, GisSystemStatic, priorityConfig);
|
|
||||||
};
|
|
||||||
|
|
||||||
const updateWdmMarkers = () => {
|
|
||||||
wdmMarkersLayerRef.current.clearLayers();
|
|
||||||
createAndSetDevices(10, setWdmMarkers, GisSystemStatic, priorityConfig);
|
|
||||||
};
|
|
||||||
|
|
||||||
const updateMessstellenMarkers = () => {
|
|
||||||
messstellenMarkersLayerRef.current.clearLayers();
|
|
||||||
createAndSetDevices(13, setMessstellenMarkers, GisSystemStatic, priorityConfig);
|
|
||||||
};
|
|
||||||
|
|
||||||
const updateTalasiclMarkers = () => {
|
|
||||||
talasiclMarkersLayerRef.current.clearLayers();
|
|
||||||
createAndSetDevices(100, setTalasiclMarkers, GisSystemStatic, priorityConfig);
|
|
||||||
};
|
|
||||||
|
|
||||||
const updateDauzMarkers = () => {
|
|
||||||
dauzMarkersLayerRef.current.clearLayers();
|
|
||||||
createAndSetDevices(110, setDauzMarkers, GisSystemStatic, priorityConfig);
|
|
||||||
};
|
|
||||||
|
|
||||||
const updateSmsfunkmodemMarkers = () => {
|
|
||||||
smsfunkmodemMarkersLayerRef.current.clearLayers();
|
|
||||||
createAndSetDevices(111, setSmsfunkmodemMarkers, GisSystemStatic, priorityConfig);
|
|
||||||
};
|
|
||||||
|
|
||||||
const updateUlafMarkers = () => {
|
|
||||||
ulafMarkersLayerRef.current.clearLayers();
|
|
||||||
createAndSetDevices(0, setUlafMarkers, GisSystemStatic, priorityConfig);
|
|
||||||
};
|
|
||||||
|
|
||||||
const updateSonstigeMarkers = () => {
|
|
||||||
sonstigeMarkersLayerRef.current.clearLayers();
|
|
||||||
createAndSetDevices(200, setSonstigeMarkers, GisSystemStatic, priorityConfig);
|
|
||||||
};
|
|
||||||
|
|
||||||
// Initiales Update für beide LayerGroups
|
|
||||||
updateGmaMarkers();
|
|
||||||
updateTalasMarkers();
|
|
||||||
updateEciMarkers();
|
|
||||||
updateGsmModemMarkers();
|
|
||||||
updateCiscoRouterMarkers();
|
|
||||||
updateWagoMarkers();
|
|
||||||
updateSiemensMarkers();
|
|
||||||
updateOtdrMarkers();
|
|
||||||
updateWdmMarkers();
|
|
||||||
updateMessstellenMarkers();
|
|
||||||
updateTalasiclMarkers();
|
|
||||||
updateDauzMarkers();
|
|
||||||
updateSmsfunkmodemMarkers();
|
|
||||||
updateUlafMarkers();
|
|
||||||
updateSonstigeMarkers();
|
|
||||||
|
|
||||||
// Setze Intervalle für regelmäßige Updates
|
|
||||||
const markerIntervalId = setInterval(() => {
|
|
||||||
updateGmaMarkers();
|
|
||||||
}, 18000); // 18 Sekunden
|
|
||||||
|
|
||||||
const talasIntervalId = setInterval(() => {
|
|
||||||
updateTalasMarkers();
|
|
||||||
}, 20000); // 20 Sekunden
|
}, 20000); // 20 Sekunden
|
||||||
|
|
||||||
// Aufräumen bei Komponentenentladung
|
// Aufräumen bei Komponentenentladung
|
||||||
return () => {
|
return () => {
|
||||||
clearInterval(markerIntervalId);
|
clearInterval(intervalId); // Entferne Intervall
|
||||||
clearInterval(talasIntervalId);
|
|
||||||
if (gmaLayerRef.current) {
|
// LayerGroups leeren
|
||||||
gmaLayerRef.current.clearLayers();
|
layerGroups.forEach(({ ref }) => {
|
||||||
}
|
if (ref.current) {
|
||||||
if (talasLayerRef.current) {
|
ref.current.clearLayers();
|
||||||
talasLayerRef.current.clearLayers();
|
}
|
||||||
}
|
});
|
||||||
};
|
};
|
||||||
}, [gisSystemStaticLoaded, map, GisSystemStatic, priorityConfig]);
|
}, [gisSystemStaticLoaded, map, GisSystemStatic, priorityConfig]);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user