Final live-sync fix for drilling markers and smooth vertex insertion
Deploy TrassenPlaner / deploy (push) Waiting to run Details

This commit is contained in:
Johannes Baumeister 2026-04-20 11:39:30 +02:00
parent 30ec96bd58
commit 7654f7a167
1 changed files with 13 additions and 12 deletions

View File

@ -1737,23 +1737,23 @@
labelLayers[v.id].addTo(map);
}
// Allow vertex insertion by clicking anywhere on the polyline
routeLayers[v.id].on('click', (e) => {
if (!v.active) return;
if (!map.editTools) return;
L.DomEvent.stopPropagation(e);
const layer = routeLayers[v.id];
const point = e.latlng;
const latlngs = layer.getLatLngs();
const vertexIndex = findClosestSegmentIndex(latlngs, point);
// Use Turf for much better snapping to the line
const line = turf.lineString(latlngs.map(ll => [ll.lng, ll.lat]));
const snapped = turf.nearestPointOnLine(line, [point.lng, point.lat]);
const snappedPt = L.latLng(snapped.geometry.coordinates[1], snapped.geometry.coordinates[0]);
// Find where to insert it based on the snap result
const vertexIndex = findClosestSegmentIndex(latlngs, snappedPt);
if (vertexIndex !== -1) {
latlngs.splice(vertexIndex + 1, 0, point);
latlngs.splice(vertexIndex + 1, 0, snappedPt);
layer.setLatLngs(latlngs);
if (layer.editor) layer.editor.refresh();
v.routes = latlngs.map(ll => ({ lat: ll.lat, lng: ll.lng }));
calculateStats(v);
updateVariantStatsUI(v);
updateRouteLabels(v);
@ -2067,7 +2067,8 @@
const vDrill = drillingLayers[variant.id];
if (vDrill) vDrill.clearLayers();
const latLngs = (variant.routes || []).map(ll => {
const layer = routeLayers[variant.id];
const latLngs = layer ? layer.getLatLngs() : (variant.routes || []).map(ll => {
try { return L.latLng(ll); } catch(e) { return null; }
}).filter(p => !!p && typeof p.lat === 'number');
@ -2077,7 +2078,7 @@
variant.stats.hasTooLongDrilling = false;
variant.drillingSegments = [];
if (latLngs.length < 2) {
if (!latLngs || latLngs.length < 2) {
renderSegmentLabels(variant);
return;
}