How to return" waypoint order " in Google Directions API?
I am developing a system to trace route using Google Maps API.
I have the points of origin and destination and between these points there are some points of interest. When plotting the Route Google returns me the best route and mark these points on the map. I display the route data in a div
.
My function that calculates the route, the part that returns the data looks like this:
directionsService.route(request, $.proxy(function(response, status){
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
var orders = response.routes[0].waypoint_order;
var route = response.routes[0];
var total_distance = 0;
var displayRoute = $('#detail-route');
for (i = 0; i < route.legs.length; i++){
var routeSegment = i + 1,
from_address = route.legs[i].start_address.split(','),
to_address = route.legs[i].end_address.split(',');
total_distance += Math.floor(route.legs[i].distance.value / 1000);
displayRoute.append('<b>Trecho ' + routeSegment + ': </b><br/>');
displayRoute.append('<b>Saindo de: </b>' + from_address[0] + '<br/>');
displayRoute.append('<b>Indo para: </b>' + to_address[0] + '<br/>');
displayRoute.append('<b>Distância: </b>' + route.legs[i].distance.text);
}
displayRoute.prepend('total:' + this.format(total_distance) + ' km' + '<br/><br/>');
function format()
it's my function to format km.
O problem is that on some routes waypoint_order
shows a different order.
For example:
For a given route, the route.legs[i]
returns Order:
waypoint 0, 1 waypoint, waypoint 3, waypoint 2
But returns waypoint_orderattribute [3, 0, 2, 1, 3]
.
Question
Is this the expected behavior, or is something missing?
1 answers
I imagine you have put the optimizeWaypoints: true
, taken from the documentation itself of the Google Directions API :
waypoint_order
contains an array indicating the order of any waypoints in the calculated route. This waypoints may be reordered if the request was passedoptimize:true
within {waypoints
parameter.
In free translation:
waypoints_order
contains a vector indicating the order of all waypoints within the calculated route. These waypoints can be re-regenerated if passedoptimize:true
in the request, next to the parameterwaypoints
.
That is, if you want to optimize the route, the path points may have their route rearranged and, perhaps because of this, the order in route.legs
is different from the order in waypoints
.