谷歌距离矩阵API:考虑交通的旅行时间

6
我试图获取两组经纬度之间的交通时间。我可以调用Google Distance Matrix API,但我只得到了不考虑交通的行程时间。我已经阅读了API注释,说要使用一个名为departure_time的参数。以下是摘录:

departure_time指定出发时间,以自1970年1月1日午夜以来的秒数表示。Maps for Business客户可以指定出发时间以考虑当前交通状况以接收旅行时间。出发时间必须设置为靠近当前时间的几分钟内。

我找到了这个网站来获取那个时间:epochconverter

然而,我仍然每次都得到相同的旅行时间。以下是一个示例请求,需要更新departure_time参数(这并不重要)。

https://maps.googleapis.com/maps/api/distancematrix/xml?units=imperial&departure_time=1408046331&origins=37.407585,-122.145287&destinations=37.482890,-122.150235

始终返回15分钟。

使用“maps dot google dot com”,考虑交通情况后返回19分钟的旅行时间。

如果有人能帮我从距离矩阵API获取带有交通情况的旅行时间,那将不胜感激。


2
您是 Maps for Business 的客户吗?看起来它只适用于商业账户,而不是免费版。 - czobrisky
你有没有找到解决这个问题的方法? - ewz
7个回答

5
不需要营业执照,只需要在https://console.developers.google.com/上获取一个API密钥并启用Google距离矩阵即可。为了获得与谷歌地图上相同的结果,请使用traffic_model和值pessimistic、optimistic,并请注意“出发时间必须设置为当前时间几分钟内”,否则它将始终返回15分钟。

这个被踩的原因是什么?这有错误吗?阅读文档时,我没有看到提到这仍然只适用于商业客户的说明。 - Chris Dutrow
3
只有购买了“Google Maps API高级版计划”的客户才能获取谷歌距离矩阵中交通模块的准确结果,具体信息请参考链接:https://developers.google.com/maps/documentation/javascript/distancematrix#distance_matrix_results。 - Hriday Nath Tripathi
这对我来说是个问题,我必须在我的查询字符串中明确添加departure_time=now,以便获得考虑交通情况的结果。 - Joel

3
请尝试以下代码。
var origin = new google.maps.LatLng(detectedLatitude,detectedLongitude);       
var destination = new google.maps.LatLng(latitudeVal,langtitudeVal);
var service = new google.maps.DistanceMatrixService();var date = new Date();
    date.setDate(date.getDate() + 1);
    var DrivingOptions = {
    departureTime: date,
    trafficModel: 'pessimistic'
    };

    service.getDistanceMatrix(
      {
        origins: [origin],
        destinations: [destination],
        travelMode: 'DRIVING',
        drivingOptions : DrivingOptions,
        unitSystem: google.maps.UnitSystem.METRIC,
        durationInTraffic: true,
        avoidHighways: false,
        avoidTolls: false
      }, response_data);function response_data(responseDis, status) {
  if (status !== google.maps.DistanceMatrixStatus.OK || status != "OK"){
    console.log('Error:', status);
    // OR
    alert(status);
  }else{
       alert(responseDis.rows[0].elements[0].distance.text);
  }});

请参考此文档 点击这里

3

3
根据文档,该功能似乎仅适用于Maps for Business客户。

3
根据谷歌文档,“departure_time”只能在“mode”(旅行模式)设置为“Driving”(默认旅行模式)且请求中包含Api KEY时才能使用。还有一个可选参数“trafficModel”。 下面是一个带有正确参数的示例网址。 https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=40.6655101,-73.89188969999998&destinations=40.598566%2C-73.7527626&mode=driving&departure_time=now&traffic_model=optimistic&key=YOUR_API_KEY 要将距离矩阵API用作JavaScript代码,请按照此文档中所述使用它。 https://developers.google.com/maps/documentation/javascript/distancematrix **重要提示:** 此API存在许多限制。大多数功能仅对高级用户开放。请仔细阅读上述文档。

1

这个API可以解决你的问题 - https://distancematrix.ai/dev

在计算旅行时间时,它考虑了交通状况、道路建设和其他限制条件。如果您之前使用过Google的API,那么使用它将非常容易,因为您不需要重写代码。

关于出发时间,您可以在文档中找到以下内容:

"departure_time - 出发时间。您可以将时间指定为自1970年1月1日午夜(UTC)以来的秒数的整数。或者,您可以指定一个值now,该值将出发时间设置为当前时间(精确到最近一秒)。如果没有指定时间,则departure_time默认为now(即出发时间默认为当前时间)。出发时间必须设置为当前时间或未来某个时间。由于道路网络的变化、更新的平均交通状况和服务的分布式性质,给定请求的结果可能随时间而变化。在任何时间或频率下,几乎等价的路线的结果也可能有所不同。"

遵循这些建议,您就不会遇到这个问题。此外,您可以轻松地联系开发人员,询问与您的情况有关的任何问题。
免责声明:我在一家创建此API的公司工作。

0
如果您正在使用golang客户端,请在Directions函数的DirectionsRequest输入参数中将DepartureTime设置为“now”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接