diff --git a/app.js b/app.js index 89c75ae..6513d09 100644 --- a/app.js +++ b/app.js @@ -534,35 +534,36 @@ document.addEventListener('DOMContentLoaded', async () => { if (!isDragUpdating) { isDragUpdating = true; requestAnimationFrame(() => { - if (!latestDragPos) { - isDragUpdating = false; - return; - } - - turbine.latlng = latestDragPos; - - // Recalculate all geometries live during drag - const newGeoms = calculateGeometries(latestDragPos, turbine.rd, turbine.hh, turbine.fr, turbine.ksfAngle, turbine.ksfMirrored, turbine.hersteller); - turbine.layers.sweptArea.clearLayers().addData(newGeoms.sweptArea); - turbine.layers.techDist.clearLayers().addData(newGeoms.techDist); - turbine.layers.techDistSmall.clearLayers().addData(newGeoms.techDistSmall); - turbine.layers.loadRadius.clearLayers().addData(newGeoms.loadRadius); - turbine.layers.foundation.clearLayers().addData(newGeoms.foundation); - turbine.layers.ksf.clearLayers().addData(newGeoms.ksf); - turbine.layers.blf.clearLayers().addData(newGeoms.blf); - turbine.layers.mf.clearLayers().addData(newGeoms.mf); - - // Move rotation handle along with it during drag - updateRotationHandlePos(turbine); - updateProximityLines(); // Abstandslinien ebenfalls live aktualisieren + try { + if (!latestDragPos) { + return; + } + + turbine.latlng = latestDragPos; + + // Recalculate all geometries live during drag + const newGeoms = calculateGeometries(latestDragPos, turbine.rd, turbine.hh, turbine.fr, turbine.ksfAngle, turbine.ksfMirrored, turbine.hersteller); + turbine.layers.sweptArea.clearLayers().addData(newGeoms.sweptArea); + turbine.layers.techDist.clearLayers().addData(newGeoms.techDist); + turbine.layers.techDistSmall.clearLayers().addData(newGeoms.techDistSmall); + turbine.layers.loadRadius.clearLayers().addData(newGeoms.loadRadius); + turbine.layers.foundation.clearLayers().addData(newGeoms.foundation); + turbine.layers.ksf.clearLayers().addData(newGeoms.ksf); + turbine.layers.blf.clearLayers().addData(newGeoms.blf); + turbine.layers.mf.clearLayers().addData(newGeoms.mf); + + // Move rotation handle along with it during drag + updateRotationHandlePos(turbine); + updateProximityLines(); // Abstandslinien ebenfalls live aktualisieren - if (activeTurbine?.id === turbine.id) { - // Keep fields updated - editNr.value = turbine.nr; - updateEditPanelPosition(); // Sync floating panel + if (activeTurbine?.id === turbine.id) { + // Keep fields updated + editNr.value = turbine.nr; + updateEditPanelPosition(); // Sync floating panel + } + } finally { + isDragUpdating = false; } - - isDragUpdating = false; }); } }); @@ -779,6 +780,7 @@ document.addEventListener('DOMContentLoaded', async () => { state.map.removeLayer(proxLayer); } } + updateProximityLines(); updateLegend(); }; } @@ -982,6 +984,9 @@ document.addEventListener('DOMContentLoaded', async () => { function updateProximityLines() { proximityLinesLayer.clearLayers(); + const checkShowProximity = document.getElementById('checkShowProximity'); + if (checkShowProximity && !checkShowProximity.checked) return; + // Only show lines if the current variant layer is visible if (!state.map.hasLayer(variantLayers[state.activeVariant])) return;