啟用即時路線導航資料動態饋給

即時路線資料動態饋給可為非針對地圖式導航指引的裝置提供導航資訊。它可以使用您提供的元素進行後續操作:

  • 圖示 (左、右、迴轉)
  • 將數字轉換成圓環。
  • 道路名稱
  • 到下個導航步驟或最終目的地的預估距離和時間

您可以使用即時路線動態饋給,打造不適用完整 Navigation SDK UI 的體驗 (例如用於小螢幕的螢幕)。舉例來說,您可以將這項功能用於雙輪車輛乘客,例如專案僅供導航的指引,協助使用者更快抵達目的地,盡量減少干擾。

重要導覽顯示元素

行動裝置螢幕顯示即將左轉 100 英尺處的左轉,進入 W Ahwanee Ave。畫面底部的剩餘時間為 46 分鐘,距離靜息時間約為 39 英里。

每個導航步驟的主要欄位是完整道路名稱、路線和步驟總距離,請參閱 GMSNavigationStepInfo 中。

在整體行程中,您可能需要顯示目前步驟或目的地的剩餘時間和距離,這些項目全都可在「GMSNavigationNavInfo」中找到。右側圖片顯示這些基本導覽元素的範例。

設定事件監聽器

如要使用僅限導覽資料,您必須為 didChangeNavInfo 事件實作事件監聽器。您可以利用事件監聽器存取行程和步驟資訊,為使用者提供即時路線導航。

如要導入事件處理常式,地圖的檢視控制器必須導入 GMSNavigatorListener 通訊協定。如要進一步瞭解如何處理 iOS 版 Navigation SDK 中的事件,請參閱「監聽導覽事件」。

處理 doChangeNavInfo 事件

didChangeNavInfo 事件建立事件監聽器,在應用程式中提供即時路線支援。在事件監聽器中,使用以下類別和列舉來控制即時路線導航:

以下範例是 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
          ...
        }
      }
    }
  }

使用 GMSNavigationNavInfonavState 屬性即可取得導航的目前狀態,為下列其中一個狀態:

  • Enroute - GMSNavigationNavStateEnroute 狀態表示引導式導航目前處於有效狀態,且使用者位於所提供的路徑上。提供目前即將執行的執行步驟相關資訊。

  • 「重新傳送」- GMSNavigationNavStateRerouting 表示導航正在進行,但導航器正在尋找新路徑。目前還沒有新路徑,因此無法使用接下來的駕駛步驟。

  • 已停止 - GMSNavigationNavStateStopped 表示導航已結束。舉例來說,當使用者離開應用程式中的導航時,導覽就會停止。在範例應用程式中,GMSNavigationNavStateStopped 狀態會清除導航資訊顯示,以免顯示停留步驟指示。

建立虛擬操作圖示

GMSNavigationManeuver 列舉定義了導航時可能會發生的各種可能動作,而您可以從 GMSNavigationStepInfomaneuver 屬性中,取得特定步驟的調用權限。

您必須建立虛擬圖示,並將圖示與相關聯的操作程式配對。對於部分操作,您可以對圖示 (例如 GMSNavigationManeuverDestinationLeftGMSNavigationManeuverDestinationRight) 設定一對一對應。不過,由於部分操縱會與其他惡意人士共用特徵,因此您可能需要將多項動作對應至單一圖示。舉例來說,GMSNavigationManeuverTurnLeftGMSNavigationManeuverOnRampLeft 都可以對應到左轉圖示。

有些行為會包含一個額外的「順時針」或「逆時針」標籤,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