Public
Edited
Mar 28
Paused
1 fork
1 star
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
mutable destinationSearchResult = []
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
async function requestTurnByTurn(origin, destination) {
let avoids = inputData_a.avoid.length
? inputData_a.avoid.map((a) => a.value).join("|")
: "";

let retval = await fetch(
`https://api.nextbillion.io/navigation/json?key=${apiKey}&option=flexible&road_info=max_speed&departure_time=${
Date.parse(inputData_a.departureTime) / 1000
}&origin=${inputData_a.origin}&destination=${
inputData_a.destination
}&mode=${inputData_a.mode.value}&lang=${
inputData_a.language.value
}&avoid=${avoids}&route_type=${inputData_a.objective.value}`
).then((response) => response.json());

const geometry = nextbillion.utils.polyline
.decode(retval.routes[0].geometry, 6)
.map((c) => c.reverse());
console.log(geometry);

for (let i = 0, len = geometry.length; i < len - 1; i++) {
geometry[i].speed = retval.routes[0].road_info.max_speed[i]?.value;
}

for (
let k = 0, len = retval.routes[0].legs[0].steps.length;
k < len - 1;
k++
) {
let step = retval.routes[0].legs[0].steps[k];

step.max_speed = -1;
for (let i = 0, len2 = geometry.length; i < len2 - 1; i++) {
var from = turf.point(geometry[i]);
var to = turf.point([
step.end_location.longitude,
step.end_location.latitude
]);
var options = { units: "meters" };
if (turf.distance(from, to, options) < 250) {
retval.routes[0].legs[0].steps[k].max_speed = geometry[i].speed;
}
}
console.log(step);
}
console.log(retval.routes[0]);
return retval;
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more