谷歌地图方向API采取帐户流量

时间:2016-05-09 16:58:47

标签: google-maps

我正在尝试编写一个简单的脚本,以便在Google工作表中计算两个地点之间的旅行时间,并考虑到流量。

我正在使用Google Maps API的类DirectionFinder。

我已经设法计算了旅行所需的时间,但无论我进入的出发时间如何,我的旅行时间都保持不变。我知道自己做错了什么吗?是否可以使用此课程考虑流量?我是否需要成为业务用户才能访问此内容?

这是我的代码:

function DrivingSeconds(origin, destination, Y, M, D, H, S) {
  Utilities.sleep(1000);
  var time= new Date(Y,M,D,H,S);
  var directions = Maps.newDirectionFinder()
  .setDepart(time)
  .setOrigin(origin)
  .setDestination(destination)
  .setMode(Maps.DirectionFinder.Mode.DRIVING)
  .getDirections();
  return directions.routes[0].legs[0].duration.value;  
}

感谢您提出的任何建议! :)

2 个答案:

答案 0 :(得分:2)

来自Google文档:

  

对于旅行模式驾驶的请求:您可以指定departure_time以接收考虑交通状况的路线和行程持续时间(响应字段:duration_in_traffic)。 如果请求包含有效的API密钥或有效的Google Maps API 高级计划客户ID和签名,则此选项仅可用。 departure_time必须设置为当前时间或将来某个时间。它不可能在过去。

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

是的,仅适用于高级用户。然后您的请求应如下所示:

var request = {
  origin: origin,
  destination: destination,
  drivingOptions: {
    departureTime: new Date(),
  },
  travelMode: google.maps.TravelMode[DRIVING]
};

var directionsService = new google.maps.DirectionsService();
directionsService.route(request, function(response,status) {
  if(status == google.maps.DirectionsStatus.OK) {
    console.log(response.routes[0].legs[0].duration_in_traffic);
  }
});

答案 1 :(得分:0)

function traffic_test() { var threeAM = new Date(); threeAM.setDate(threeAM.getDate() + 1); threeAM.setHours(3, 0, 0); var eightAM = new Date(threeAM); eightAM.setHours(8, 0, 0); var directionFinder = Maps.newDirectionFinder() .setOrigin('Union Square, San Francisco') .setDestination('Golden Gate Park, San Francisco') .setMode(Maps.DirectionFinder.Mode.DRIVING); var directions = directionFinder.setDepart(threeAM).getDirections(); var leg = directions.routes[0].legs[0]; Logger.log('3AM: leg.duration=' + leg.duration.text + '; leg.duration_in_traffic=' + leg.duration_in_traffic.text); directions = directionFinder.setDepart(eightAM).getDirections(); leg = directions.routes[0].legs[0]; Logger.log('8AM: leg.duration=' + leg.duration.text + '; leg.duration_in_traffic=' + leg.duration_in_traffic.text); } 可能就是您需要的。

例如此代码:

[19-07-21 08:39:54:606 PDT] 3AM: leg.duration=16 mins; leg.duration_in_traffic=12 mins
[19-07-21 08:39:54:795 PDT] 8AM: leg.duration=16 mins; leg.duration_in_traffic=16 mins

记录以下内容:

#file: foo_module.py
def foo():
    print("Am foo v1")