【问题标题】:Google Directions Api returning 0 routesGoogle Directions Api 返回 0 条路线
【发布时间】:2018-02-13 15:24:02
【问题描述】:

我们正在调用 google 路线 API 来计算往返价值。一般来说,它工作得很好。但是,我遇到了一个用例,它无法提出任何路线。但是,当我们使用具有相同起点、目的地、航点和 travelMode 的 js google.maps.DirectionsService 版本时,它可以工作。

失败的调用是: https://maps.googleapis.com/maps/api/directions/json?origin=-33.92873,18.458879&destination=-33.92873,18.458879&waypoints=via:-33.9403,18.666731&mode=driving&key=

回复是

{
   "geocoded_waypoints" : [ {}, {}, {} ],
   "routes" : [],
   "status" : "ZERO_RESULTS"
}

【问题讨论】:

  • 您的“DirectionsStatus”是“ZERO_RESULTS”吗?可能是“OVER_QUERY_LIMIT”或其他。
  • 不是。其他结果仍在返回。
  • From developers.google.com/maps/documentation/geocoding/intro "表示地理编码成功但未返回任何结果。如果地理编码器传递的地址不存在,则可能会发生这种情况。"
  • 就像我说的。如果我使用 js api 或通过谷歌地图手动查询,则查询有效。它也适用于其他往返查询。

标签: javascript google-maps google-maps-api-3 google-directions-api


【解决方案1】:

当您使用via: 前缀(无中途停留)时,它会增加一些额外的限制。特别是不允许掉头机动,路线必须直行通过航路点。如果这不可能,路线服务将返回 ZERO_RESULTS。

为了检查这个假设,我创建了完全相同的请求,但有中途停留(没有via: 前缀)。您可以在路线计算器中查看结果:

https://directionsdebug.firebaseapp.com/?origin=-33.92873%2C18.458879&destination=-33.92873%2C18.458879&waypoints=-33.9403%2C18.666731

确实,您应该在 -33.9403,18.666731(标记 B)处掉头,这就是当您尝试创建没有中途停留的路线时出现 ZERO_RESULTS 的原因。

官方文档也证实了这一点:

警告:使用 via: 前缀来避免中途停留会导致方向对航点的解释非常严格。如果 Google Maps Directions API 无法创建通过该点的路线,这可能会导致路线严重绕道或响应状态代码中出现 ZERO_RESULTS。

https://developers.google.com/maps/documentation/directions/intro#Waypoints

我希望这能解释你的疑问!

【讨论】:

  • 超级。感谢您保存我的搜索:)
  • 非常感谢。我得到了几条路线的 ZERO_RESULTS(大约 1000 条路线中的 2 条),这是导致问题的掉头。
猜你喜欢
  • 1970-01-01
  • 2020-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多