Google Directions API返回不同的waypoint_order和leg

Van*_*mos 13 javascript jquery google-maps google-maps-api-3

我正在开发一个使用Google Maps API跟踪路线的系统.我有原点和目的地,在这些点之间有一些路标.通过跟踪路线,Google会返回最佳路线并在地图上标记这些点.我们在div中显示路径数据.我的计算路径的函数,返回数据的部分如下所示:

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/>');
Run Code Online (Sandbox Code Playgroud)

函数format()是我格式km的函数..

问题在于,在某些路线上,waypoint_order节目的顺序与中的顺序不同legs.例如:

对于给定路线,route.legs[i]返回顺序为:"航点0,航点1,航点3,航点2",但该 waypoint_order属性返回[3,0,2,1,3]

这是预期的行为,还是我错过了什么?

sab*_*ero 9

是一种预期的行为,因为:

如果optimizeWaypoints设置为true,则此字段将包含输入路点的重新排序的排列.例如,如果输入为: 原点:洛杉矶
Waypoints:达拉斯,班戈,凤凰城 目的地:纽约,优化输出的排序如下: 原产地:洛杉矶 航点:凤凰城,达拉斯,班戈 目的地:纽约然后这个领域将是一个包含值[2,0,1]的数组.请注意,航点的编号从零开始.如果任何输入航路点的中途停留设置为false,则此字段将为空,因为路由优化不适用于此类查询.

如上所述:DirectionsResult

waypoint_order是优化的订单