您选择的交通偏好设置会通过以下两种方式之一来平衡路线详情的准确性与请求性能:
可感知路况 - 返回尽可能准确的结果(延迟时间较长)。
不感知路况 - 尽快返回结果(延迟时间最短)。
发出请求时,请权衡是返回尽可能准确的结果更好,还是尽快返回结果更好。Routes API 提供了多种选项,可让您控制响应数据的质量与响应延迟时间。
如何设置流量级别
Routes API 提供了 RoutingPreference (REST) 和 RoutingPreference (gRPC),可让您指定用于计算路线的路线偏好设置。
默认情况下,系统会返回不考虑路况的结果。您可以使用 TRAFFIC_UNAWARE、TRAFFIC_AWARE 和 TRAFFIC_AWARE_OPTIMAL 路线偏好设置来选择路况选项。每种路线偏好设置都会产生不同的路线质量、预计到达时间和响应延迟时间。
路况信息
路况信息描述了交通流量:
正常路况:没有拥堵,车辆以正常速度行驶。
轻度到中度拥堵:拥堵加剧,车辆行驶速度降低。
拥堵:严重拥堵,车速大幅降低。
不感知流量
TRAFFIC_UNAWARE 是默认设置。如果您希望尽快返回响应,并且大致路线详情已足够,请使用此路线偏好设置。
TRAFFIC_UNAWARE 路线在计算时未考虑当前路况信息。此路由偏好设置可实现最快的请求响应(最低延迟)。
如果您选择 TRAFFIC_UNAWARE,则系统会根据道路网和与时间无关的平均路况信息而非当前路况信息来选择路线和时长。因此,路线可能包括暂时关闭的道路。受道路网变化、平均路况信息更新以及服务的分布式性质的影响,给定请求的结果可能会随时间的推移而发生变化。此外,在时间或频率不受限制的情况下,即使两条路线几乎相同,结果还是有可能不同。
您会看到以下响应:
duration- 包含路线的预计到达时间。staticDuration:仅考虑历史路况信息时路线的预计到达时间。对于TRAFFIC_UNAWARE,此字段包含与duration相同的值。
感知流量
如果您希望获得比 TRAFFIC_UNAWARE 更准确的路线详情,并且不介意响应返回延迟时间略有增加,请使用此路线偏好设置。
设置 TRAFFIC_AWARE 路线偏好设置后,服务会在计算路线时考虑当前路况信息。因此,路线和路线详情能更准确地反映实际情况。由于数据质量的提高是以响应延迟时间为代价的,因此我们应用了性能优化来减少大部分延迟时间。
您会看到以下响应:
duration:考虑实时路况信息后的预计到达时间。staticDuration仅考虑历史路况信息时路线的预计到达时间。
可感知路况的最佳路线
如果您希望获得最高质量的结果,而不考虑回答所需的时间,请使用此路由偏好设置。此路由偏好设置在返回响应时延迟最长(延迟时间最长)。
设置 TRAFFIC_AWARE_OPTIMAL 路线偏好设置后,服务会在计算路线时考虑当前路况信息,但不会应用性能优化。在此模式下,服务器会对道路网络进行更详尽的搜索,以找到最佳路线。
TRAFFIC_AWARE_OPTIMAL 路线偏好设置等同于 maps.google.com 和 Google 地图移动应用使用的模式。
将此选项与 Compute Route Matrix 搭配使用时,请求中的元素数量(出发地数量 × 目的地数量)会受到限制。 如需详细了解计算路线矩阵限制,请参阅计算路线矩阵。
您会看到以下响应:
duration:考虑实时路况信息后,路线的预计到达时间。staticDuration:仅考虑历史路况信息时路线的预计到达时间。
设置出发时间(可选)
此属性仅适用于需要将出发时间设置为未来时间的流量感知请求。如果您未设置 departureTime 属性,则默认为您发出请求的时间。
如果您想调整服务在选择路线时预测路况的方式,请将 departureTime 属性与 TRAFFIC_AWARE 和 TRAFFIC_AWARE_OPTIMAL 选项搭配使用。
TRAFFIC_UNAWARE:不推荐,因为系统会根据道路网和与时间无关的平均路况信息来选择路线和时长。TRAFFIC_AWARE和TRAFFIC_AWARE_OPTIMAL:建议在近期出发时使用,因为这些偏好设置会考虑实时路况信息。departureTime越接近当前时间,实时路况信息就越重要、越相关。您将出发时间设置得越远,系统在选择路线时就越会考虑历史路况信息。
示例:如何选择路况感知路线规划
以下 JSON 代码演示了如何在请求消息实体正文中设置 TRAFFIC_AWARE_OPTIMAL 路由偏好设置。
{ "origin":{ "location":{ "latLng":{ "latitude":37.419734, "longitude":-122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude":37.417670, "longitude":-122.079595 } } }, "travelMode":"DRIVE", "routingPreference":"TRAFFIC_AWARE_OPTIMAL" }