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;
}