The existing calculated route Feature with LineString geometry
Array of existing waypoints in order (origin, intermediate waypoints, destination)
The new waypoint to insert
The index where the new waypoint should be inserted (0 means insert at the beginning, existingWaypoints.length means append at the end)
const route: Route = {
type: 'Feature',
id: 'route-1',
geometry: {
type: 'LineString',
coordinates: [[4.9, 52.3], [4.95, 52.35], [5.0, 52.4]]
},
properties: { ... },
bbox: [4.9, 52.3, 5.0, 52.4]
};
const waypoints: WaypointLike[] = [
[4.9, 52.3], // origin
[5.0, 52.4] // destination
];
const newWaypoint: WaypointLike = [4.95, 52.35];
const insertIndex = findBestWaypointInsertionIndex(route, waypoints, newWaypoint);
// Returns: 1 (insert between origin and destination)
const updatedWaypoints = [
...waypoints.slice(0, insertIndex),
newWaypoint,
...waypoints.slice(insertIndex)
];
Finds the best index to insert a new waypoint into an existing route.
This function determines the optimal position to insert a new waypoint among existing waypoints by finding where it fits most naturally along the route line. The algorithm: