为啥“Google Maps”一书中的 Google Maps Directions API 示例对我不起作用?

Posted

技术标签:

【中文标题】为啥“Google Maps”一书中的 Google Maps Directions API 示例对我不起作用?【英文标题】:Why won't the Google Maps Directions API example in the 'Google Maps' book work for me?为什么“Google Maps”一书中的 Google Maps Directions API 示例对我不起作用? 【发布时间】:2016-03-31 02:54:11 【问题描述】:

我正在使用 Petrousos 的“Google Maps”图书,并尝试运行从图书网站 www.mhprofessional.com 下载的 CHAPTER17/html/Directions Service.html 中的示例,内容为 0071823026。

我不得不调整表格尺寸以使其正确显示,但除此之外没有进行任何更改。我正在通过 Firefox 运行它。

我设置了起点和终点,然后点击“显示路线”,此时什么也没发生。

事件调用了以下函数:

function showDirections() 
  var start = document.getElementById("origin").value;
  var end = document.getElementById("destination").value;
  var request = 
    origin: start,
    destination: end,
    travelMode: google.maps.TravelMode.DRIVING
  ;
  directionsService.route(request, function(result, status) 
    if (status == google.maps.DirectionsStatus.OK) 
      directionsDisplay.setDirections(result);
     printDirections(result);
    
  );

我得到了directionsService.route调用,但它显然没有被执行,并且没有定义状态和结果。

我不知道如何进一步调试,无法访问 API 代码..

示例中调用的语法会不会过时?

我没有 API 密钥,但我知道这不是必需的,并且我已经运行了其他没有 API 密钥的示例。

【问题讨论】:

请张贴 Minimal, Complete, Tested and Readable example 来证明您的问题 (Uncaught ReferenceError: printDirections is not defined)。如果我注释掉 printDirections 调用并提供缺失的数据,则发布的代码可以正常工作。 【参考方案1】:

您的旧示例仍然有效吗?如果没有,那是因为您没有 API 密钥。超过配额后,Google 将关闭您。我相信配额是每小时 50 个请求。

Google 拥有最新的文档(而且文档非常详尽)

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

另外,你能看看对象返回什么吗?如果是这样,那通常表明报价被超过。您可以通过在链接处设置断点来做到这一点

if (status == google.maps.DirectionsStatus.OK) 

如果您使用的是 Chrome,您可以通过右键单击页面并选择“检查元素”进入调试器,然后转到源代码,找到您的代码行并单击链接号以设置断点。

【讨论】:

以上是关于为啥“Google Maps”一书中的 Google Maps Directions API 示例对我不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这不是 google.maps.Map 的地图实例? InvalidValueError:setMap:不是 Map 的实例;

在 Google 地图上重新排序控件

为啥在调试 android google maps 示例时没有调用我的 onLocationChanged() 方法?

为啥我在使用 Google Maps API 时没有收到“同源政策”警告?

Android:Google Maps Clustermanager 行为异常。群集图标有时在全放大时不会消失。为啥?

为啥使用默认的 React Google Maps 得到“TypeError:无法将类调用为函数”?