Google Maps JavaScript库是否支持路况信息?

时间:2018-11-18 12:18:21

标签: javascript google-maps google-maps-api-3 client-side

我想在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图书馆不提供的行车交通信息

1 个答案:

答案 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计划客户。