Final live-sync fix for drilling markers and smooth vertex insertion
Deploy TrassenPlaner / deploy (push) Waiting to run
Details
Deploy TrassenPlaner / deploy (push) Waiting to run
Details
This commit is contained in:
parent
30ec96bd58
commit
7654f7a167
25
index.html
25
index.html
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue