How do I return the waypoint_order in the Google Directions API?


I'm developing a route-mapping system using the Google Maps API.

I have the points of origin and destination and between these points there are some points of interest. When tracing 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) {

    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() is my function to format km.

The problem is that on some routes, waypoint_order shows a different order.

For example:

For a given route, route.legs[i] returns order:

waypoint 0, 1 waypoint, waypoint 3, waypoint 2

but returns waypoint_orderattribute [3, 0, 2, 1, 3] .


Is this expected behavior, or is something missing?

asked by anonymous 29.01.2014 / 12:39

1 answer


I assume you've placed optimizeWaypoints: true , removed from the Google Directions documentation 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 passed optimize:true within its waypoints parameter.

Free translation:


waypoints_order contains a vector indicating the order of all waypoints within the calculated route. These waypoints can be refurbished if < optimize:true > is passed in the request, next to the waypoints parameter.

In other words, if you want to optimize the route, the waypoints can have their route rearranged, so perhaps the order in route.legs is different from the order of waypoints .

29.01.2014 / 13:57