Google Distance Matrix Api:带有流量的旅行时间

时间:2014-08-14 20:45:56

标签: google-maps-api-3

我正在尝试通过两组纬度/经度坐标之间的流量获取旅行时间。我可以调用Google Distance Matrix API,但我的旅行时间没有流量。我读过的API说明使用了一个名为departure_time的参数。以下是摘录:

departure_time指定所需的出发时间为自UTC时间1970年1月1日午夜起的秒数。出发时间可由Maps for Business客户指定,以指定在考虑当前交通状况时接收行程持续时间的出发时间。 departure_time必须设置在当前时间的几分钟内。

我发现这个网站给了我那个时间: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获取流量来帮助我获得旅行时间,那将非常感激。

7 个答案:

答案 0 :(得分:4)

无需营业执照,只需启用Google距离矩阵的https://console.developers.google.com/项目中的API密钥即可。 对于谷歌地图上的结果,使用具有悲观,乐观的值的traffic_model并记住“departure_time必须设置为当前时间的几分钟内”,而不会总是返回15分钟。

答案 1 :(得分:3)

根据docs,该功能似乎仅供Maps for Business客户使用。

答案 2 :(得分:2)

即使拥有营业执照,如果您正在使用旅行模式驾驶,您也只能在5分钟后查询出发时间

https://developers.google.com/maps/documentation/distancematrix/

答案 3 :(得分:2)

请尝试使用以下代码。

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);
  }});

请参阅此文档click here

答案 4 :(得分:1)

根据谷歌文档“departure_time”只能在“模式”(旅行模式)设置为“驾驶”(默认的travelMode)并且Api KEY包含在您的请求中时使用。 还有一个可选参数“trafficModel”。 这是一个带有适当参数的示例url。 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

** Imp:**此API有许多限制。大多数功能仅适用于高级用户。请仔细阅读上述文档。

答案 5 :(得分:1)

此API可以解决您的问题-https://distancematrix.ai/dev

在计算旅行时间时,它会考虑交通状况,道路建设和其他限制。而且,如果您之前使用过Google的API,那将很容易,因为您无需重写代码。

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

“ departure_time-所需的出发时间。您可以将时间指定为自UTC 1970年1月1日午夜以来的秒数。或者,您可以指定值now,将出发时间设置为当前时间(校正为最接近的秒数)。如果未指定任何时间,则department_time默认为现在(即,出发时间默认为当前时间)。deary_time必须设置为当前时间或将来的某个时间过去不可能。由于路网的变化,平均交通状况的更新以及服务的分散性,给定请求的结果可能会随时间而变化。时间或频率。”

遵循以下建议,您将不会遇到此问题。此外,您可以轻松地与开发人员联系并询问有关您的情况的任何问题。

免责声明:我在一家创建此API的公司工作。

答案 6 :(得分:0)

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