我正在尝试编写一个简单的脚本,以便在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;
}
感谢您提出的任何建议! :)
答案 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")