Google Directions API Transit返回Zero_Results,手动搜索Google地图会返回结果

Pri*_*ice 7 google-maps google-maps-api-3

我在Google Directions API中搜索了文档,并在网上浏览过,无法找到我的难题的答案.我的机构开发了一个API,用于查找使用公交的起点和目的地之间的最新可能偏离,还有一些返回"No_Result"错误.但是,当我手动搜索Google地图时,我可以返回结果.

我的Google Directions API程序发出以下查询:

https://maps.googleapis.com/maps/api/directions/json?units=imperial&origin=650+Memorial+Dr+chicopee+MA&destination=50+College+St+South+Hadley+MA&arrival_time=1461301200&mode=transit

返回:

    {
   "available_travel_modes" : [ "DRIVING", "BICYCLING", "WALKING" ],
   "geocoded_waypoints" : [
      {
         "geocoder_status" : "OK",
         "place_id" : "ChIJ7VtqLK7d5okR-bTUfKuHVpo",
         "types" : [ "street_address" ]
      },
      {
         "geocoder_status" : "OK",
         "place_id" : "ChIJxwHLSqzb5okR1rrjYhcDvkc",
         "types" : [ "premise" ]
      }
   ],
   "routes" : [],
   "status" : "ZERO_RESULTS"
}
Run Code Online (Sandbox Code Playgroud)

但是,当我使用Google地图手动查询时,我可以通过传输返回结果.

https://www.google.com/maps/dir/650+Memorial+Drive,+Chicopee,+MA/50+College+Street,+South+Hadley,+MA/@42.2678007,-72.7164286,11z/data= !!!!!!!3M1 4B1 4m18 4m17 1M5 1M1 1s0x89e6ddae2c6a5bed:0x9a5687ab7cd4b4f92平方米1D-72.5797548 2d42.1751992 1M5 1M1 1s0x89e6dbac4b2aac81:!!!!!!!!!!!0xe9809aca8e8e0bdc2平方米1D-72.5766752 2d42.25381362立方米6E1 7E2 !8j1461200400!3E3

我已经仔细检查了任何明显的错误(例如使用"Rd"而不是"St",或者输入一个不存在的地址)但是没有找到任何错误.我也改变了计划中的出发/到达时间,没有运气.

错误消息看起来表明MODE as TRANSIT不是该源/目标对之间的选项 - 但是手动界面没有问题.

有谁知道为什么谷歌地图可能会拒绝API查询,而不是手动查询?或者任何资源来帮助解决这个问题?谢谢!!

And*_*w W 6

“全部大写”响应(无意中)存在误导性错误 - Google Maps API 服务器不会在此处进行正确的错误检查,如果您给它全部大写mode参数,无论您编写哪种模式,它都会返回驾驶方向。

真正的答案是,API 并不支持所有地方的所有模式,尽管 Google 地图应用程序支持。您可以提交功能请求来尝试推动这种平价。例如日本的公共交通: https://issuetracker.google.com/issues/35826181

测试查询以证明如果您使用全部大写字母,地图方向响应并不关心您指定的模式(请务必添加您的 API 密钥):

驾驶 - https://maps.googleapis.com/maps/api/directions/json?departure_time=now&destination=place_id%3AChIJp4QhcgzyGGARZaBIPuJzfpg&mode=DRIVING&origin=place_id%3AChIJlyOpErWHGGAR0156e32g1Xs&key=API_KEY

公交 - https://maps.googleapis.com/maps/api/directions/json?departure_time=now&destination=place_id%3AChIJp4QhcgzyGGARZaBIPuJzfpg&mode=TRANSIT&origin=place_id%3AChIJlyOpErWHGGAR0156e32g1Xs&key=API_KEY

步行 - https://maps.googleapis.com/maps/api/directions/json?departure_time=now&destination=place_id%3AChIJp4QhcgzyGGARZaBIPuJzfpg&mode=WALKING&origin=place_id%3AChIJlyOpErWHGGAR0156e32g1Xs&key=API_KEY


小智 4

查询字符串中的模式 ( mode=transit) 应大写 - 请尝试mode=TRANSIT改为大写。

  • 通过执行此操作,它会返回驾驶方向。我意识到,手动操作的 LatLng 数据最终可能会处于无效位置,与​​任何行进方向都不匹配。为了证明这一点,只需从 Google 地图中复制 LatLng 位置并将其粘贴到 URL 字符串中作为目的地,将不同的其他位置作为起点粘贴到 URL 字符串中。结果是,“过境”大部分运作良好。 (2认同)