您选择的流量偏好设置会通过以下两种方式之一,在路线详细信息的准确性与请求性能之间取得平衡:
- 考虑流量:返回尽可能准确的结果(延迟时间较长)。
- 不考虑流量:尽快返回结果(延迟时间最短)。
发出请求时,请权衡是返回尽可能准确的结果,还是尽快返回结果。Routes 库提供了一些选项,可让您控制响应数据的质量与响应的延迟时间。
设置流量级别和流量模型
如需指定流量级别,请在 ComputeRoutesRequest 上设置 routingPreference。以下列表显示了可用的 routingPreference 选项:
TRAFFIC_UNAWARE(默认):以最快速度返回结果,其中包含大致的路线详情。TRAFFIC_AWARE:使用实时路况数据返回更准确的结果,但延迟时间更长。TRAFFIC_AWARE_OPTIMAL:使用实时路况数据返回尽可能准确的结果,但延迟时间最长。
TRAFFIC_MODEL 属性表示在预测交通中的时长时要使用的假设条件(
TrafficModel.BEST_GUESS [默认值]、
TrafficModel.OPTIMISTIC、
TrafficModel.PESSIMISTIC)。
如何选择可感知路况的路线
如需创建包含路况信息的路线请求,请按以下步骤操作:
-
将
travelMode属性设置为DRIVING。 -
将
routingPreference属性设置为以下值之一:TRAFFIC_AWARETRAFFIC_AWARE_OPTIMAL
注意:
TRAFFIC_UNAWARE是默认设置。 -
将
trafficModel属性设置为以下值之一: -
将
extraComputations属性设置为TRAFFIC_ON_POLYLINE。 -
请求
path、speedPaths和routeLabels字段。
以下示例请求展示了如何请求一条可显示折线上的路况数据的考虑路况的路线:
// Define a traffic aware routes request with polylines. const requestWithTraffic = { origin: '200 King St San Francisco, CA 94107', destination: 'Pier 41, San Francisco, CA 94133', travelMode: 'DRIVING', routingPreference: 'TRAFFIC_AWARE_OPTIMAL', trafficModel: 'optimistic', extraComputations: ['TRAFFIC_ON_POLYLINE'], fields: ['speedPaths'], };
路况信息
路况信息用于描述交通流量的速率:
- 正常流量:没有拥堵,交通以正常速度流动。
- 轻度到中度拥堵:拥堵程度加剧,交通流量以较低的速度流动。
- 路况拥堵:严重拥堵,车速大幅降低。
不了解路况
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 地图移动应用所使用的模式。
如果将此选项与 computeRouteMatrix 搭配使用,则请求中的元素数量(出发地数量 × 目的地数量)不得超过 25。
您会看到以下回答:
duration:考虑实时路况信息的路线预计到达时间。staticDuration:仅考虑历史流量信息的路线的预计到达时间。
设置出发时间(可选)
仅在需要将出发时间设置为未来的流量感知请求中使用此属性。如果您未设置 departureTime 属性,则该属性默认为您发出请求的时间。
如果您想调整服务在选择路线时预测流量的方式,请将 departureTime 属性与 TRAFFIC_AWARE 和 TRAFFIC_AWARE_OPTIMAL 选项搭配使用。
TRAFFIC_UNAWARE:不推荐,因为路线和时长的选择是基于道路网和与时间无关的平均路况信息。TRAFFIC_AWARE和TRAFFIC_AWARE_OPTIMAL: 建议用于近期出发,因为这些偏好设置会考虑实时路况。departureTime越接近当前时间,实时路况信息就越重要和相关。您将出发时间设置得越晚,系统在选择路线时就越会考虑历史交通状况。
获取路线令牌
路由令牌是路由的 base64 编码表示形式,可在网络上安全使用。使用路线令牌与 Navigation SDK 分享路线。SDK 会使用此令牌来重建路线并保持原始导航意图,即使在重新规划路线期间也是如此。
请按以下步骤操作以获取路线令牌:
- 将 travelMode 设置为
DRIVING。 - 将
routingPreference设置为TRAFFIC_AWARE或TRAFFIC_AWARE_OPTIMAL。 - 请求
routeToken字段。
以下示例请求展示了如何请求路线令牌:
// Define a traffic aware routes request with a route token. const requestWithRouteToken = { origin: '200 King St San Francisco, CA 94107', destination: 'Pier 41, San Francisco, CA 94133', travelMode: 'DRIVING', routingPreference: 'TRAFFIC_AWARE', fields: ['path', 'speedPaths', 'routeLabels', 'routeToken'], };