即時路線資料動態饋給可為非針對地圖式導航指引的裝置提供導航資訊。它可以使用您提供的元素進行後續操作:
- 圖示 (左、右、迴轉)
- 將數字轉換成圓環。
- 道路名稱
- 到下個導航步驟或最終目的地的預估距離和時間
您可以使用即時路線動態饋給,打造不適用完整 Navigation SDK UI 的體驗 (例如用於小螢幕的螢幕)。舉例來說,您可以將這項功能用於雙輪車輛乘客,例如專案僅供導航的指引,協助使用者更快抵達目的地,盡量減少干擾。
重要導覽顯示元素
每個導航步驟的主要欄位是完整道路名稱、路線和步驟總距離,請參閱 GMSNavigationStepInfo 中。
在整體行程中,您可能需要顯示目前步驟或目的地的剩餘時間和距離,這些項目全都可在「GMSNavigationNavInfo」中找到。右側圖片顯示這些基本導覽元素的範例。
設定事件監聽器
如要使用僅限導覽資料,您必須為 didChangeNavInfo
事件實作事件監聽器。您可以利用事件監聽器存取行程和步驟資訊,為使用者提供即時路線導航。
如要導入事件處理常式,地圖的檢視控制器必須導入 GMSNavigatorListener
通訊協定。如要進一步瞭解如何處理 iOS 版 Navigation SDK 中的事件,請參閱「監聽導覽事件」。
處理 doChangeNavInfo 事件
為 didChangeNavInfo
事件建立事件監聽器,在應用程式中提供即時路線支援。在事件監聽器中,使用以下類別和列舉來控制即時路線導航:
GMSNavigationNavInfo - 定義導航狀態相關資訊的類別。
GMSNavigationStepInfo — 定義導航路線中單一步驟資訊的類別。
GMSNavigationNavState — 定義導航的目前狀態,例如步行、重新轉送或已停止。
GMSNavigationDrivingSide — Enum 用來定義此步驟是位於免行駛的車子上或駕車行駛的路線。
GMSNavigationManeuver — 列舉定義要採取的動作,例如向左或向右。
以下範例是 didChangeNavInfo
事件的事件監聽器:
Objective-C
// ViewController.h @interface SomeViewController () <GMSNavigatorListener> @end // ViewController.m @implementation SomeViewController // Some initialization code. ... { ... [_mapView.navigator addListener:self]; ... } #pragma mark GMSNavigatorListener - (void)navigator:(GMSNavigator *)navigator didUpdateNavInfo:(GMSNavigationNavInfo *)navInfo { // Get the current step information if (navInfo.navState == GMSNavigationNavStateEnroute) { GMSNavigationStepInfo *currentStep = navInfo.currentStep; if (currentStep) { ... roadNameLabel.text = currentStep.simpleRoadName; ... } } ... }
Swift
// ViewController.swift class SomeViewController: UIViewController { ... mapView.navigator?.add(self); ... } extension SomeViewController: GMSNavigatorListener { func navigator(_ navigator: GMSNavigator, didUpdateNavInfo navInfo: GMSNavigationNavInfo) { // Get the current step information if navInfo.navState == .enroute { if let currentStep = navInfo.currentStep { ... roadNameLabel.text = currentStep.simpleRoadName ... } } } }
導覽狀態
使用 GMSNavigationNavInfo 的 navState
屬性即可取得導航的目前狀態,為下列其中一個狀態:
Enroute -
GMSNavigationNavStateEnroute
狀態表示引導式導航目前處於有效狀態,且使用者位於所提供的路徑上。提供目前即將執行的執行步驟相關資訊。「重新傳送」-
GMSNavigationNavStateRerouting
表示導航正在進行,但導航器正在尋找新路徑。目前還沒有新路徑,因此無法使用接下來的駕駛步驟。已停止 -
GMSNavigationNavStateStopped
表示導航已結束。舉例來說,當使用者離開應用程式中的導航時,導覽就會停止。在範例應用程式中,GMSNavigationNavStateStopped
狀態會清除導航資訊顯示,以免顯示停留步驟指示。
建立虛擬操作圖示
GMSNavigationManeuver 列舉定義了導航時可能會發生的各種可能動作,而您可以從 GMSNavigationStepInfo 的 maneuver
屬性中,取得特定步驟的調用權限。
您必須建立虛擬圖示,並將圖示與相關聯的操作程式配對。對於部分操作,您可以對圖示 (例如 GMSNavigationManeuverDestinationLeft
和 GMSNavigationManeuverDestinationRight
) 設定一對一對應。不過,由於部分操縱會與其他惡意人士共用特徵,因此您可能需要將多項動作對應至單一圖示。舉例來說,GMSNavigationManeuverTurnLeft
和 GMSNavigationManeuverOnRampLeft
都可以對應到左轉圖示。
有些行為會包含一個額外的「順時針」或「逆時針」標籤,SDK 會根據國家/地區的駕駛行為來判斷。例如,在道路左側行駛的國家/地區,駕駛人會順時針或 U 轉彎,而道路右側國家/地區則逆時針移動。Navigation SDK 會偵測左側或右側流量是否發生,並輸出適當的執行作業。因此,您的滑鼠圖示可能與順時針方向而有所差異。
展開即可查看不同播放方式的圖示範例
範例圖示 | 回合唱機 |
---|---|
DEPART UNKNOWN |
|
STRAIGHT ON_RAMP_UNSPECIFIED OFF_RAMP_UNSPECIFIED NAME_CHANGE
|
|
TURN_RIGHT ON_RAMP_RIGHT
|
|
TURN_LEFT ON_RAMP_LEFT
|
|
TURN_SLIGHT_RIGHT ON_RAMP_SLIGHT_RIGHT OFF_RAMP_SLIGHT_RIGHT
|
|
TURN_SLIGHT_LEFT ON_RAMP_SLIGHT_LEFT OFF_RAMP_SLIGHT_LEFT
|
|
TURN_SHARP_RIGHT ON_RAMP_SHARP_RIGHT OFF_RAMP_SHARP_RIGHT
|
|
TURN_SHARP_LEFT ON_RAMP_SHARP_LEFT OFF_RAMP_SHARP_LEFT
|
|
TURN_U_TURN_COUNTERCLOCKWISE ON_RAMP_U_TURN_COUNTERCLOCKWISE OFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
|
TURN_U_TURN_CLOCKWISE ON_RAMP_U_TURN_CLOCKWISE OFF_RAMP_U_TURN_CLOCKWISE
|
|
ROUNDABOUT_SHARP_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SHARP_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_SLIGHT_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SLIGHT_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_STRAIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_STRAIGHT_CLOCKWISE
|
|
ROUNDABOUT_SLIGHT_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SLIGHT_LEFT_CLOCKWISE
|
|
ROUNDABOUT_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_LEFT_CLOCKWISE
|
|
ROUNDABOUT_SHARP_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SHARP_LEFT_CLOCKWISE
|
|
ROUNDABOUT_U_TURN_COUNTERCLOCKWISE
|
|
ROUNDABOUT_U_TURN_CLOCKWISE
|
|
ROUNDABOUT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_CLOCKWISE
|
|
ROUNDABOUT_EXIT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_EXIT_CLOCKWISE
|
|
MERGE_RIGHT OFF_RAMP_RIGHT
|
|
MERGE_LEFT OFF_RAMP_LEFT
|
|
FORK_RIGHT TURN_KEEP_RIGHT ON_RAMP_KEEP_RIGHT OFF_RAMP_KEEP_RIGHT
|
|
FORK_LEFT TURN_KEEP_LEFT ON_RAMP_KEEP_LEFT OFF_RAMP_KEEP_LEFT
|
|
MERGE_UNSPECIFIED
|
|
DESTINATION
|
|
DESTINATION_RIGHT
|
|
DESTINATION_LEFT
|
|
FERRY_BOAT
|
|
FERRY_TRAIN
|