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

时间:2016-04-15 14:09:11

标签: 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"
}

但是,当我使用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:0x9a5687ab7cd4b4f9!2m2!1d-72.5797548!2d42.1751992!1m5!1m1!1s0x89e6dbac4b2aac81:0xe9809aca8e8e0bdc!2m2!1d-72.5766752!2d42.2538136!2m3!6e1!7e2!8j1461200400!3e3

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

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

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

3 个答案:

答案 0 :(得分:4)

The mode (mode=transit) in your query string should be capitalized - try mode=TRANSIT instead.

答案 1 :(得分:4)

“全部大写”回复(无意中,但是)误导性错误 - 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

答案 2 :(得分:0)

我认为这对解决此错误很有帮助。实际上,主要问题是 let long 格式不正确且位置已更改。因此请应用此代码。享受

var service = new google.maps.DistanceMatrixService();
                                        service.getDistanceMatrix({
                                            origins: [latOffice + "," + longOffice],
                                            destinations: [latitudeS + "," + longitudeS],
                                            travelMode: google.maps.TravelMode.DRIVING,
                                            unitSystem: google.maps.UnitSystem.METRIC,
                                            avoidHighways: true,
                                            avoidTolls: true
                                        }, function (response, status) {
                                            if (status == google.maps.DistanceMatrixStatus.OK && response.rows[0].elements[0].status != "ZERO_RESULTS") {
                                                var distance2 = response.rows[0].elements[0].distance.text;
                                                var duration2 = response.rows[0].elements[0].duration.text;
                                                duration = duration2;
                                            } else {
                                                //alert("Your Request For Distance Not Available");
                                                Swal.fire('Oops...', 'Your Request For Distance Not Available!', 'error');
                                            }