diff --git a/components/MapComponent.js b/components/MapComponent.js
index 819eaab18..ffc376ef0 100644
--- a/components/MapComponent.js
+++ b/components/MapComponent.js
@@ -1178,88 +1178,92 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
}, []);
useEffect(() => {
- if (map && poiLayerRef.current && isPoiTypLoaded) {
- map.removeLayer(poiLayerRef.current);
- poiLayerRef.current = new L.LayerGroup().addTo(map);
+ try {
+ if (map && poiLayerRef.current && isPoiTypLoaded) {
+ map.removeLayer(poiLayerRef.current);
+ poiLayerRef.current = new L.LayerGroup().addTo(map);
- locations.forEach(async (location) => {
- const { latitude, longitude } = parsePoint(location.position);
- const poiTypName = poiTypMap.get(location.idPoiTyp) || "Unbekannt";
- const deviceName = await fetchDeviceNameById(location.idLD);
- //console.log("location.icon:", location);
+ locations.forEach(async (location) => {
+ try {
+ const { latitude, longitude } = parsePoint(location.position);
+ const poiTypName = poiTypMap.get(location.idPoiTyp) || "Unbekannt";
+ const deviceName = await fetchDeviceNameById(location.idLD);
- // Check if user has the right to drag the marker
- const canDrag = userRights ? userRights.includes(56) : false; // Check if userRights is not null before using includes
- // Finde das passende Icon aus poiData
- const matchingIcon = poiData.find(
- (poi) => poi.idPoi === location.idPoi
- );
- const iconUrl = matchingIcon
- ? `/img/icons/pois/${matchingIcon.path}`
- : "/img/icons/pois/default-icon.png";
- const marker = L.marker([latitude, longitude], {
- icon: L.icon({
- iconUrl: `/img/icons/pois/poi-marker-icon-${location.idPoiTyp}.png`,
- //iconUrl: `/img/icons/pois/poi-marker-icon-${location.icon}.png`, //die kommen nicht aus poi sonder aus poityp tabelle
- iconUrl: iconUrl,
- iconSize: [25, 41],
- iconAnchor: [12, 41],
- popupAnchor: [1, -34],
- }),
- draggable: canDrag, // Set draggable based on permission
- id: location.idPoi,
- }).bindContextMenu({
- contextmenu: true,
- contextmenuWidth: 140,
- contextmenuItems: [
- {
- text: "POI Bearbeiten",
- icon: "/img/poi-edit.png",
- callback: () => handleEditPoi(marker),
- },
- ],
- });
+ const canDrag = userRights ? userRights.includes(56) : false;
+ const matchingIcon = poiData.find(
+ (poi) => poi.idPoi === location.idPoi
+ );
+ const iconUrl = matchingIcon
+ ? `/img/icons/pois/${matchingIcon.path}`
+ : "/img/icons/pois/default-icon.png";
- marker.bindPopup(`
-
- ${location.description || "Unbekannt"}
- ${deviceName}
- ${poiTypName}
-
- `);
-
- marker.on("mouseover", function () {
- this.openPopup();
- handlePoiSelect({
- id: location.idPoi,
- deviceId: location.idLD,
- typ: poiTypName,
- description: location.description,
- });
- setCurrentPoi(location);
- });
-
- marker.on("mouseout", function () {
- this.closePopup();
- });
-
- marker.on("dragend", (e) => {
- if (canDrag) {
- const newLat = e.target.getLatLng().lat;
- const newLng = e.target.getLatLng().lng;
- const markerId = e.target.options.id;
- updateLocationInDatabase(markerId, newLat, newLng).then(() => {
- onLocationUpdate(markerId, newLat, newLng);
+ const marker = L.marker([latitude, longitude], {
+ icon: L.icon({
+ iconUrl: iconUrl,
+ iconSize: [25, 41],
+ iconAnchor: [12, 41],
+ popupAnchor: [1, -34],
+ }),
+ draggable: canDrag,
+ id: location.idPoi,
+ }).bindContextMenu({
+ contextmenu: true,
+ contextmenuWidth: 140,
+ contextmenuItems: [
+ {
+ text: "POI Bearbeiten",
+ icon: "/img/poi-edit.png",
+ callback: () => handleEditPoi(marker),
+ },
+ ],
});
- } else {
- console.error("Drag operation not allowed");
+
+ marker.bindPopup(`
+
+ ${location.description || "Unbekannt"}
+ ${deviceName}
+ ${poiTypName}
+
+ `);
+
+ marker.on("mouseover", function () {
+ this.openPopup();
+ handlePoiSelect({
+ id: location.idPoi,
+ deviceId: location.idLD,
+ typ: poiTypName,
+ description: location.description,
+ });
+ setCurrentPoi(location);
+ });
+
+ marker.on("mouseout", function () {
+ this.closePopup();
+ });
+
+ marker.on("dragend", (e) => {
+ if (canDrag) {
+ const newLat = e.target.getLatLng().lat;
+ const newLng = e.target.getLatLng().lng;
+ const markerId = e.target.options.id;
+ updateLocationInDatabase(markerId, newLat, newLng).then(() => {
+ onLocationUpdate(markerId, newLat, newLng);
+ });
+ } else {
+ console.error("Drag operation not allowed");
+ }
+ });
+
+ if (poiLayerVisible) {
+ marker.addTo(poiLayerRef.current);
+ }
+ } catch (innerError) {
+ console.error("Error processing a location:", innerError);
}
});
- //poiLayer ein - oder ausschalten
- if (poiLayerVisible) {
- marker.addTo(poiLayerRef.current);
- }
- });
+ }
+ } catch (error) {
+ console.error("Error in useEffect:", error);
}
}, [
map,
@@ -1270,6 +1274,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
userRights,
poiLayerVisible,
]);
+
//---------------------------------------------
//-------------------------------------------------------------------------------