如何通过Google Maps JavaScript API获取实时起止点行程时长
获取Google Maps API实时行程时长的正确方法
嘿,我懂你现在的烦恼——用directionsService调用后拿到的总是那种完全不考虑实时堵车的理想时长,根本没法用在实际场景里对吧?别着急,其实Google Maps API早就给我们准备了获取实时路况行程时长的方案,只要调整几个关键参数就能搞定。
下面是具体的实现步骤和注意点:
核心:启用实时路况参数
要拿到实时数据,你需要在directionsService的请求里加上两个关键参数:
departure_time:这个是必须的,把它设置为当前时间(比如JavaScript里的new Date()),告诉API你要计算的是当前出发情况下的行程时长,而不是默认的“路况完美”状态。如果需要查询未来某个时间点的预估时长,也可以传入对应的时间戳。traffic_model(可选但推荐):这个参数用来指定API计算时长的模型,有三个选项:best_guess:默认值,结合实时路况和历史数据给出最合理的估计pessimistic:保守估计,适合需要留足缓冲时间的场景optimistic:乐观估计,假设路况比平时顺畅
示例代码(JavaScript)
给你一个实际可运行的例子,对比一下理想时长和实时时长的获取:
const directionsService = new google.maps.DirectionsService(); directionsService.route({ origin: 'Los Angeles, CA', destination: 'San Diego, CA', travelMode: google.maps.TravelMode.DRIVING, // 关键:设置出发时间为当前时刻 departure_time: new Date(), // 可选:选择路况模型 traffic_model: 'best_guess' }, (response, status) => { if (status === 'OK') { // 理想时长(无实时路况) const idealDuration = response.routes[0].legs[0].duration; // 实时路况下的时长 const realTimeDuration = response.routes[0].legs[0].duration_in_traffic; console.log('理想时长:', idealDuration.text); console.log('实时行程时长:', realTimeDuration.text); } else { console.error('请求失败:', status); } });
注意哦,实时时长是存在duration_in_traffic字段里的,别再去拿原来的duration字段啦!
重要注意事项
- 确保你的API密钥已经启用了Directions API,并且开通了计费(实时路况功能属于付费服务,免费额度有限,超出后会按用量收费)。
- 只有
DRIVING和TWO_WHEELER这两种出行模式支持实时路况数据,步行、公共交通这些模式是没有duration_in_traffic字段的。 - 如果
departure_time设置的是未来时间,API会基于历史路况数据预测那个时间点的时长;如果是过去的时间,会返回对应时间点的历史路况估计。
内容的提问来源于stack exchange,提问作者Sandeep Suresh
相关产品推荐
相关产品推荐

