前往導航點

iOS 版 Navigation SDK 提供更完善的航點或導航點指定方式,可提供更準確的路線規劃和更優質的抵達體驗,特別是針對有多個入口或特定導航點的目的地。您可以使用 navigationPointToken 規劃前往精確位置的路線,這是一組編碼位置和額外路線環境的字串。您也可以結合經緯度座標和地點 ID,取得額外環境資訊。

背景

在 10.10 版之前,您可以透過位置座標地點 ID 定義 Waypoint。雖然有時有效,但僅根據經緯度規劃路線有時會導致下車或上車地點不理想,特別是大型場地、公園或有多個入口的建築物。結果可能會對應到最近的路段,但這可能不是最方便或正確的進入點。

強化路線控點選項可提供更多背景資訊,解決這個問題。

使用導覽點權杖

如要取得最精確的路線,前往入口、裝卸貨碼頭或指定取貨區等特定存取點,可以使用 navigationPointToken

這個權杖是透過呼叫 Geocoding API 的 Destinations 方法取得,代表與地點相關聯的特定可規劃路線導覽點。

如要指定導覽點權杖,請按照下列步驟操作:

  1. Geocoding API 的 Destinations 方法回應中取得 navigationPointToken

  2. 建立 GMSNavigationWaypoint 時,請指定 navigationPointToken

注意:您無法同時指定導航點權杖,以及位置和 PlaceID。

Swift

// Create a waypoint using a navigation endpoint token
let waypointTwo = GMSNavigationWaypoint(
  navigationPointToken: "ChIJALijSXPhQkARHmIozCCbXsASEgkFVjYHGH6PgBFrbM7wl3.."
  title: "Sydney Opera House")

// Route to the waypoint
navigator.setDestinations([waypointTwo]) { [weak self] routeStatus in
   self?.handleRouteCallback(status: routeStatus)
}

Objective-C

GMSNavigationWaypoint *waypointTwo = [[GMSNavigationWaypoint alloc] initWithNavigationPointToek:@"sampleNavigationPointToken"

使用導覽點權杖和路線權杖

您可以透過 Geocoding API 擷取導航點權杖,從 Routes API 擷取路線權杖,然後將導航點權杖和路線權杖傳遞至 Navigation SDK。這在共乘或外送等情境中非常實用,您可以使用 Routes API 計算行程價格,並取得導航點權杖的精確度。

路線權杖會讓 Navigation SDK 選擇的路線,偏向用於定價的路線。這可降低行程使用較長或較短路線的風險,避免出現「價格震盪」。

如要進一步瞭解如何使用導覽點權杖指定位置建立路徑權杖,請參閱 Routes API 說明文件。如要瞭解如何使用路徑權杖規劃路徑,請參閱「規劃路徑」。

下圖顯示共乘或外送應用程式如何一併使用導航點權杖和路線權杖:

共乘或外送用途圖表
共乘或外送用途的圖表

結合地點 ID 和位置

從 10.10 版開始,建立途中的路線控點時,您可以同時提供地點 ID 和位置座標。如果您想指定精確地點,同時提供整體地點的背景資訊 (地點 ID),這個方法就十分實用。這樣一來,Navigation SDK 就能醒目顯示目的地建築物,或顯示與地點 ID 相關的附近搜尋點,提供更豐富的抵達體驗。

Swift

// Create a waypoint using both the latlng and placeID
let waypoint = GMSNavigationWaypoint(
  location: CLLocationCoordinate2DMake(-33.85657945261524, 151.21535034203333),  
  placeID: "ChIJ3S-JXmauEmsRUcIaWtf4MzE",
  title: "Sydney Opera House")

// Route to the waypoint
navigator.setDestinations([waypoint]) { [weak self] routeStatus in
   self?.handleRouteCallback(status: routeStatus)
}

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint = [[GMSNavigationWaypoint alloc] initWithLocation:placeID:coordinate title:@"waypoint from location and placeiD"];

注意事項:

同時提供 placeIDlocation 時:

  • 路線主要以指定的 location 為目標。
  • 系統會將「placeId」做為背景資訊,提升抵達體驗。
  • 回退:如果 SDK 判斷提供的 placeId 對應的功能與指定的 location 相差太遠,系統就會忽略 placeId。在這種情況下,系統只會繼續前往 location,且無法提供地點專屬的抵達體驗強化功能。

有效路線控點設定摘要

規格 location placeID navigationPointToken 轉送行為 目的地醒目顯示
僅限地點座標 set 缺席 缺席 導向最接近所定義座標的路段 如果系統能以高準確度推斷目的地,就會顯示這項資訊
僅限地點 ID 缺席 set 缺席 前往地點 ID 預設導航點的路線 起點地點 ID
僅限導航點權杖 缺席 缺席 set 通往以符記表示的精確導航點的路線 從原始 Geocoding API 目的地方法要求中定義的目的地
位置座標和地點 ID 組合 se set 缺席 導向最接近所定義座標的路段 從地點 ID (如果地點 ID 與經緯度座標的距離太遠,則不會顯示)