Google Directions Api返回0条路线

时间:2017-09-05 10:50:29

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

我们正在调用google指令api来计算往返行程值。一般来说它完美无缺。然而,我遇到了一个用例,它无法提出任何路由。但是,当我们使用具有相同origin,destination,waypoints和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"
}

1 个答案:

答案 0 :(得分:8)

当您使用via:前缀(无中途停留)时,它会添加一些额外的限制。特别是不允许掉头操纵,路线必须直接通过航路点。如果不可能,Directions服务将返回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)中进行U形转弯,当你尝试创建一个没有中途停留的路线时,这就是ZERO_RESULTS的原因。

enter image description here

官方文件中也证实了这一点:

  

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

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

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