即時路線資料動態饋給會為未設計地圖導航指引的裝置,提供僅限導航的資訊。這項功能會根據您提供的元素,提供即將進行的動作:
- 圖示 (左轉、右轉、迴轉)
- 圓環出口編號
- 道路名稱
- 到下一個導航步驟或最終目的地的預估距離和時間
您可以運用即時路線動態饋給建立體驗,例如在小螢幕上顯示時,不適合使用完整的 Navigation SDK UI。舉例來說,您可以將這項功能用於兩輪車騎士,投射僅限導航的指引,協助他們更快、更自信地抵達目的地,同時盡可能減少干擾。
基本導航顯示元素
每個導覽步驟的主要欄位是完整路名、
動作和步驟總距離,這些資訊可在 GMSNavigationStepInfo 中取得。
如要顯示整體行程的剩餘時間和距離,可以選擇顯示目前步驟或目的地的剩餘時間和距離,這些資訊都可在 GMSNavigationNavInfo 中取得。
右圖是這些基本導覽元素的範例。
設定事件監聽器
如要使用僅限導覽的資料,您必須實作 didChangeNavInfo 事件的事件監聽器。在事件監聽器中,存取行程和步驟資訊,為使用者提供即時路線導航。
如要實作事件處理常式,地圖的檢視控制器必須實作 GMSNavigatorListener 通訊協定。如要進一步瞭解如何處理 iOS 版 Navigation SDK 中的事件,請參閱「監聽導覽事件」。
處理 didChangeNavInfo 事件
建立 didChangeNavInfo 事件的監聽器,在應用程式中新增逐步導航支援功能。在事件監聽器中,使用下列類別和列舉來控制逐步導航:
GMSNavigationNavInfo— 定義導覽狀態相關資訊的類別。GMSNavigationStepInfo:定義導航路線中單一步驟相關資訊的類別。GMSNavigationNavState:定義導航目前狀態的列舉,例如行進中、重新規劃路線或已停止。GMSNavigationDrivingSide— 列舉,定義這個步驟是否位於靠右行駛或靠左行駛的路線上。GMSNavigationManeuver:定義導航動作的列舉,例如向左轉或向右轉。
以下是 didChangeNavInfo 事件的事件監聽器範例:
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 ... } } } }
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; ... } } ... }
導覽狀態
使用 GMSNavigationNavInfo 的 navState 屬性,取得目前的導航狀態,可能為下列其中一項:
Enroute:
GMSNavigationNavStateEnroute狀態表示導航功能已啟用,且使用者正在行經提供的路線。可取得目前即將進行的行進步驟相關資訊。重新規劃路線:
GMSNavigationNavStateRerouting表示導航正在進行中,但導航器正在尋找新路線。由於尚未產生新路線,因此無法提供下一個行進步驟。已停止 -
GMSNavigationNavStateStopped表示導航已結束。舉例來說,當使用者在應用程式中退出導航時,導航就會停止。在範例應用程式中,GMSNavigationNavStateStopped狀態會清除導航資訊顯示,以免顯示殘留的步驟指示。
車道指引
Navigation SDK 會將導航轉彎資訊卡中的車道,表示為 GMSNavigationLane 和 GMSNavigationLaneDirection 資料物件。GMSNavigationLane 物件代表導航期間的特定車道,並包含 GMSNavigationLaneDirection 物件清單,說明可從這個車道進行的所有轉彎。
建議駕駛人行駛車道的方向會以 recommended 欄位標示。

車道指引範例
下列程式碼片段說明上圖中顯示的車道資料表示法。
// Lane 1
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 2
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 3
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false}]
// Lane 4
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false},
{/*GMSNavigationLaneShape=*/ GMSNavigationLaneShapeNormalRight, /*recommended=*/ false}]
車道指引圖片
Navigation SDK 支援為 GMSNavigationStepInfo 傳達的每個導航步驟生成車道圖片。這些圖示符合 CarPlay 的圖片大小指引。
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];
建立動作圖示
![]()
GMSNavigationManeuver 列舉定義了導航期間可能發生的每個動作,您可以從 GMSNavigationStepInfo 的 maneuver 屬性取得特定步驟的動作。
您必須建立行進圖示,並與相關聯的行進動作配對。針對部分動作,你可以設定一對一的圖示對應,例如 GMSNavigationManeuverDestinationLeft 和 GMSNavigationManeuverDestinationRight。不過,由於某些動作與其他動作共用特徵,您可能會想將多個動作對應至單一圖示。例如,GMSNavigationManeuverTurnLeft 和 GMSNavigationManeuverOnRampLeft 都可以對應到左轉圖示。
部分行進方向會包含額外的「Clockwise」或「CounterClockwise」標籤,SDK 會根據國家/地區的行車方向決定。舉例來說,在靠左行駛的國家/地區,駕駛人會以順時針方向行經圓環或迴轉,而靠右行駛的國家/地區則會以逆時針方向行駛。Navigation SDK 會偵測左側或右側車流是否發生操作,並輸出適當的操作。因此,順時針和逆時針操作的圖示可能不同。
展開即可查看不同動作的範例圖示
| 範例圖示 | 即時路線導航 |
|---|---|
![]() |
DEPARTUNKNOWN |
![]() |
STRAIGHTON_RAMP_UNSPECIFIEDOFF_RAMP_UNSPECIFIEDNAME_CHANGE
|
![]() |
TURN_RIGHTON_RAMP_RIGHT
|
![]() |
TURN_LEFTON_RAMP_LEFT
|
![]() |
TURN_SLIGHT_RIGHTON_RAMP_SLIGHT_RIGHTOFF_RAMP_SLIGHT_RIGHT
|
![]() |
TURN_SLIGHT_LEFTON_RAMP_SLIGHT_LEFTOFF_RAMP_SLIGHT_LEFT
|
![]() |
TURN_SHARP_RIGHTON_RAMP_SHARP_RIGHTOFF_RAMP_SHARP_RIGHT
|
![]() |
TURN_SHARP_LEFTON_RAMP_SHARP_LEFTOFF_RAMP_SHARP_LEFT
|
![]() |
TURN_U_TURN_COUNTERCLOCKWISEON_RAMP_U_TURN_COUNTERCLOCKWISEOFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
![]() |
TURN_U_TURN_CLOCKWISEON_RAMP_U_TURN_CLOCKWISEOFF_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_RIGHTOFF_RAMP_RIGHT
|
![]() |
MERGE_LEFTOFF_RAMP_LEFT
|
![]() |
FORK_RIGHTTURN_KEEP_RIGHTON_RAMP_KEEP_RIGHTOFF_RAMP_KEEP_RIGHT
|
![]() |
FORK_LEFTTURN_KEEP_LEFTON_RAMP_KEEP_LEFTOFF_RAMP_KEEP_LEFT
|
![]() |
MERGE_UNSPECIFIED
|
![]() |
DESTINATION
|
![]() |
DESTINATION_RIGHT
|
![]() |
DESTINATION_LEFT
|
![]() |
FERRY_BOAT
|
![]() |
FERRY_TRAIN
|
使用生成的圖示
Navigation SDK 支援為特定 GMSNavigationStepInfo 產生行進圖示。這些圖示符合 CarPlay 圖片大小指引。
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];







































