fixes split gpx function

This commit is contained in:
Christian Beutel
2025-07-20 13:40:18 +02:00
parent 634c34ce65
commit 353e52b0f6
3 changed files with 19 additions and 12 deletions

View File

@@ -178,14 +178,16 @@ export async function splitSegment(index: number, pos: LngLat) {
if (dist < minDistance) {
bestSplitIndex = i
minDistance = dist
}
}
const firstSegmentPoints = [...points.slice(0, index)];
const secondSegmentPoints = [...points.slice(index)];
const intersectionPoint = new Waypoint({ $: { lat: pos.lat, lon: pos.lng}, ele: points[bestSplitIndex].ele });
const firstSegmentPoints = [...points.slice(0, bestSplitIndex), intersectionPoint];
const secondSegmentPoints = [intersectionPoint, ...points.slice(bestSplitIndex)];
seg.trkpt = firstSegmentPoints;
insertIntoRoute(secondSegmentPoints, index)
editRoute(index, firstSegmentPoints)
insertIntoRoute(secondSegmentPoints, index + 1)
}
export function normalizeRouteTime() {

View File

@@ -75,7 +75,7 @@ export class LayerManager {
private async updateOverpassLayer(newState: MapState) {
const overpassLayer = this.layers.overpass;
if (overpassLayer) {
if (overpassLayer && this.map.getSource('overpass')) {
const castedOverpassLayer = overpassLayer as OverpassLayer;
overpassLayer.filter = await castedOverpassLayer.updateLayerIfNeeded(newState, this.map.getBounds());
(this.map.getSource('overpass') as M.GeoJSONSource).setData(castedOverpassLayer.data);

View File

@@ -429,7 +429,7 @@
id: "crop-start-marker",
icon: "fa-regular fa-circle",
fontSize: "xs",
style: "z-10 w-6",
style: "w-6",
width: 4,
backgroundColor: "bg-primary",
fontColor: "white",
@@ -441,7 +441,7 @@
id: "crop-end-marker",
icon: "fa fa-flag-checkered",
fontSize: "xs",
style: "z-10 w-6",
style: "w-6",
width: 4,
backgroundColor: "bg-primary",
fontColor: "white",
@@ -731,12 +731,16 @@
if (!drawingActive) {
return;
}
const position = marker.getLngLat();
anchor.lat = position.lat;
anchor.lon = position.lng;
await recalculateRoute(
valhallaStore.anchors.findIndex((a) => a.id == anchor.id),
const anchorIndex = valhallaStore.anchors.findIndex(
(a) => a.id == anchor.id,
);
const thisAnchor = valhallaStore.anchors[anchorIndex];
const position = marker.getLngLat();
thisAnchor.lat = position.lat;
thisAnchor.lon = position.lng;
await recalculateRoute(anchorIndex);
draggingMarker = false;
},
);
@@ -943,6 +947,7 @@
splitSegment(data.segment, data.event.lngLat);
updateFollowingAnchors(data.segment);
updateTrailWithRouteData();
}
function reverseTrail() {