您選取的流量偏好設定會透過下列兩種方式,平衡路線詳細資料的準確度與要求效能:
- 流量感知:盡可能傳回最準確的結果 (延遲時間較長)。
- 不考慮流量:盡快傳回結果 (延遲時間最短)。
提出要求時,請權衡是要盡可能傳回最準確的結果,還是盡快傳回結果。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'], };