feat(preview): add continuous vehicle turn routes
This commit is contained in:
@@ -423,7 +423,7 @@
|
||||
}
|
||||
|
||||
function addVehicleCruises(viewer, routeData, vehicleModelName) {
|
||||
const segments = ((routeData && routeData.segments) || [])
|
||||
const segments = ((routeData && (routeData.routes || routeData.segments)) || [])
|
||||
.filter((segment) => segment.coordinates && segment.coordinates.length >= 2)
|
||||
.slice(0, 5);
|
||||
const speed = Number((routeData && routeData.speedMetersPerSecond) || 8);
|
||||
@@ -439,7 +439,7 @@
|
||||
const vehicle = addCruiseVehicle(viewer, segment, index, start, speed, vehicleModelName);
|
||||
const option = document.createElement("option");
|
||||
option.value = String(index);
|
||||
option.textContent = "#" + (index + 1) + " " + segment.name + " " + Math.round(segment.lengthMeters) + "m";
|
||||
option.textContent = routeLabel(segment, index);
|
||||
vehicleSelect.appendChild(option);
|
||||
return vehicle;
|
||||
});
|
||||
@@ -493,10 +493,24 @@
|
||||
positions,
|
||||
route,
|
||||
segment,
|
||||
label: "Vehicle #" + (index + 1) + " | route " + segment.id + " | " + Math.round(segment.lengthMeters) + "m"
|
||||
label: routeLabel(segment, index),
|
||||
};
|
||||
}
|
||||
|
||||
function routeLabel(route, index) {
|
||||
const counts = { left: 0, right: 0, through: 0 };
|
||||
for (const maneuver of route.maneuvers || []) {
|
||||
if (maneuver in counts) counts[maneuver] += 1;
|
||||
}
|
||||
const actions = [
|
||||
counts.left ? "左 " + counts.left : "",
|
||||
counts.right ? "右 " + counts.right : "",
|
||||
counts.through ? "直 " + counts.through : "",
|
||||
].filter(Boolean).join(" / ");
|
||||
return "#" + (index + 1) + " · " + Math.round(route.lengthMeters || 0) + " m" +
|
||||
(actions ? " · " + actions : "");
|
||||
}
|
||||
|
||||
function selectedVehicle(cruise) {
|
||||
return cruise.vehicles[cruise.state.selectedIndex] || cruise.vehicles[0];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user