我想在Web应用程序的前端获取路况信息。在后端,可以使用以下GET请求轻松实现:
https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=...&destinations=...&key=...&travelMode=DRIVING&departure_time=1542600800
但是,当将客户端javascript库用于Google Maps并发出这样的请求时:
service.getDistanceMatrix({
origins: '...',
destinations: '...',
mode: 'driving',
unitSystem: window.google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false,
transitOptions: {
departureTime: new Date('2018-11-18T06:20:00.000'),
},
}
无论使用什么出发时间,我都会得到以下响应,其中持续时间信息不会改变。
destinationAddresses: ["..."]
originAddresses: ["..."]
distance: {text: "27.3 km", value: 27256}
duration: {text: "1 hour 1 min", value: 3689}
所以我的问题是:我是在做错什么还是请求JS Google Maps图书馆不提供的行车交通信息?
答案 0 :(得分:0)
是的,您应该能够获得客户端库的持续时间。我的猜测是,您将Deriving_time嵌套在transitOptions中,因此在使用travelMode:Driving时将被忽略。来自Documentation:
transitOptions(可选)—仅适用于travelMode为TRANSIT的请求的选项。
由于您要获取驾驶响应,请尝试使用drivingOptions选项:
$_POST
duration字段显然不包含交通信息,duration_in_traffic对象包含此信息,它具有以下要求。来自Google DistanceMatrix Documentation:
duration_in_traffic:考虑当前交通状况后,沿此路线行驶的时间长度,以秒(值字段)表示并以文本形式表示。文本值将根据请求中指定的unitSystem设置格式(如果未提供首选项,则设置为公制)。仅在有交通数据可用,模式设置为行驶且在请求中的distanceMatrixOptions字段中包含departmentTime的情况下,才将duration_in_traffic返回给Google Maps APIs Premium计划客户。