diff --git a/index.html b/index.html index dbebd59..ec2b932 100644 --- a/index.html +++ b/index.html @@ -1303,7 +1303,7 @@ return L.marker(latlng, { icon: L.divIcon({ className: 'infrastructure-icon', - html: '', + html: '', iconSize: [32, 32], iconAnchor: [16, 16], popupAnchor: [0, -16] @@ -1762,10 +1762,15 @@ lineOptions: { color: '#cca300', weight: 6 }, vertexOptions: { color: '#cca300', radius: 6 }, middleMarkerOptions: { color: '#cca300', opacity: 0.6, radius: 4 } - }).on('editable:vertex:drag editable:vertex:dragend editable:vertex:new editable:vertex:deleted editable:vertex:inserted', (e) => { - calculateStats(v); + }).on('editable:vertex:drag editable:drawing:move', (e) => { + calculateStats(v, true); updateVariantStatsUI(v); updateRouteLabels(v); + }).on('editable:vertex:dragend editable:vertex:new editable:vertex:deleted editable:vertex:inserted editable:drawing:end', (e) => { + calculateStats(v, false); + updateVariantStatsUI(v); + updateRouteLabels(v); + saveVariantToDB(v); }); drillingLayers[v.id] = L.featureGroup({ interactive: false, pane: 'drillingPane' }); @@ -1943,8 +1948,7 @@ activeV.routes = e.layer.getLatLngs(); } - calculateStats(activeV); - updateVariantStatsUI(activeV); + calculateStats(activeV, e.type.includes('drag') || e.type.includes('move')); updateVariantStatsUI(activeV); if (e.type.includes('end') || e.type === 'editable:created' || e.type.includes('dragend') || e.type === 'editable:vertex:inserted') { renderVariants(); @@ -2096,7 +2100,7 @@ // Cache for obstacles to avoid repeated filtering/lowercase during drag let cachedObstacles = null; - function calculateStats(variant) { + function calculateStats(variant, isDragging = false) { if (!variant) return; const vDrill = drillingLayers[variant.id]; if (vDrill) vDrill.clearLayers(); @@ -2119,6 +2123,8 @@ renderSegmentLabels(variant); + if (isDragging) return; + // Pre-filter obstacles if (!cachedObstacles && state.usage.features) { const keywords = ['bahn', 'gewässer', 'wasser', 'straße', 'verkehr', 'gehölz', 'baufläche', 'wald', 'forst', 'hecke', 'weg', 'pfad', 'graben', 'bach', 'fluss']; @@ -2218,7 +2224,7 @@ // Add Muffen markers seg.muffen.forEach(mpos => { L.circleMarker(mpos, { - radius: 5, + radius: 3, color: '#000000', weight: 2, fillOpacity: drillingOpacity,