如何使用谷歌方向API优化路由



我正在使用google direction api来解决旅行推销员问题。

显然,api接受一个名为optimize:true的参数,然后返回一个"waypoint_order": [ 1, 0, 2, 3 ],告诉你优化路线的最佳路点顺序。

问题是,当你尝试优化路由时,API不工作,你得到NO_RESULTS。

例如,使用这个url来查看当optimize:true|位被添加时API是如何失败的。

NOT working (NO_RESULTS error):

https://maps.googleapis.com/maps/api/directions/json?origin=place_id ChIJdd4hrwug2EcRmSrV3Vo6llI&目的地= place_id: ChIJh1a5WhEMa0gRY1JU4PEam8Q&锚点=优化:真| place_id: ChIJPeqVDlONbEgRk4X1zrUsKDs | place_id: ChIJ_WegsaCYc0gRlCypaxXgLjs |,关键= YOUR_KEY

正在工作(但未优化):

未优化url: https://maps.googleapis.com/maps/api/directions/json?origin=place_id:ChIJdd4hrwug2EcRmSrV3Vo6llI&destination=place_id:ChIJh1a5WhEMa0gRY1JU4PEam8Q&waypoints=place_id:ChIJPeqVDlONbEgRk4X1zrUsKDs|place_id:ChIJ_WegsaCYc0gRlCypaxXgLjs|&key=YOUR_KEY

有人知道他们是否停止支持路线优化吗?

谢谢

在我看来,这是一个bug在DirectionsService当你传递placeid。我用Javascript API复制了它。使用地址工作:

  waypts = [];
  waypts.push({
  location: "Plymouth, UK", // {placeId:"ChIJPeqVDlONbEgRk4X1zrUsKDs"},
  stopover: true
  });
  waypts.push({
  location: "Bournemouth, UK", // {placeId:"ChIJ_WegsaCYc0gRlCypaxXgLjs"},
  stopover: true
  });
  var request = {
    origin: "London, UK", //{placeId:"ChIJdd4hrwug2EcRmSrV3Vo6llI"},
    destination: "Newquay, UK", //{placeId: "ChIJh1a5WhEMa0gRY1JU4PEam8Q"},
    waypoints: waypts,
    optimizeWaypoints: true,
    travelMode: 'DRIVING'
  };

使用地址(返回路径点顺序=1,0)

但是相同的位置(我使用这些placeid来获取上面的地址)不使用placeid:

  waypts = [];
  waypts.push({
  location: {placeId:"ChIJPeqVDlONbEgRk4X1zrUsKDs"},
  stopover: true
  });
  waypts.push({
  location: {placeId:"ChIJ_WegsaCYc0gRlCypaxXgLjs"},
  stopover: true
  });
  var request = {
    origin: {placeId:"ChIJdd4hrwug2EcRmSrV3Vo6llI"},
    destination: {placeId: "ChIJh1a5WhEMa0gRY1JU4PEam8Q"},
    waypoints: waypts,
    optimizeWaypoints: true,
    travelMode: 'DRIVING'
  };

使用placeId(返回ZERO_RESULTS)

可能与问题跟踪器中的问题有关:问题8979:错误:不能将placeId和String组合用于原点/目的地

最新更新