常見問題

產品特色

網路

資料

使用者介面自訂

路線

模擬器

Workflows

產品特色

應用程式必須導入含有「Navigation SDK 服務條款」的對話方塊,指出每個驅動程式都必須接受。駕駛人可透過這個對話方塊同意《服務條款》。Navigation SDK 會提供條款的文字檔案。
在 Android 中,使用 NavigationApi.showTermsAndConditionsDialog 方法顯示含有字詞的對話方塊。
在 iOS 中呼叫 GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName
Google Maps Mobile 支援的所有語言都會自動用於 Navigation SDK。裝置具有預設系統語言,應用程式無法變更這項設定,但應用程式可以存取超過 70 種語言。

需要。在 Android 中,一旦啟動後,LocationListener 會繼續在背景執行。您的應用程式會繼續對齊位置並維持方位。

在 iOS 中,如要繼續在背景接收位置和航向的位置更新,請實作道路貼齊功能,並將 allowsBackgroundLocationUpdates 設為 YES

需要。建立或變更路徑時,RouteChangeListener 會提供折線。

否,即使在裝置上安裝 Google Maps SDK,Navigation SDK 也不需要。
否,Navigation SDK 目前不提供這項功能。
可以。預設會顯示及顯示車流量方向。

網路

Navigation SDK 如何處理連線品質不佳的情況?
Navigation SDK 會為每個歷程預先快取路徑。預先快取資訊包括 15 到 20 分鐘的路線資訊,以及司機偏離路線時路線替代路線。Navigation SDK 會使用裝置 GPS 和感應器的概略位置。
是否支援離線模式?
不可以,Navigation SDK 目前不提供離線模式,但 SDK 會提供歷程的預先快取資訊。

資料

我可以在開始路線之前,擷取旅程中的所有停靠站/目的地嗎?

需要。在 Android 中,如要擷取路線的路線,請呼叫 Navigator.getRouteSegments()

在 iOS 中呼叫 GMSNavigator.routeLegs(read)

路線的起點有即時路線指引嗎?
可以。Navigation SDK 提供路徑區隔清單。此外,駕駛人也可以滑動標頭中的路線資訊卡來查看每部行為。
如何向應用程式使用者傳達預計到達時間?

在 Android 中,按照下列步驟操作,將預計到達時間資訊提供給應用程式使用者:

  1. 使用 Navigator.getTimeAndDistanceList() 擷取所有路線控點的時間和距離。
  2. 按照目前驅動程式預計到達時間的方式,將這項資訊轉送至用戶端應用程式。

在 iOS 中,請按照下列步驟將預計到達時間資訊提供給應用程式使用者:

  1. 使用 Navigator.getRouteSegments() 擷取旅程中的路段。
  2. 針對每個旅程路段呼叫 GMSNavigator.timeToNextDestination
  3. 按照目前驅動程式預計到達時間的方式,將時間資訊轉送至用戶端應用程式。
如果導航不在前景執行,是否可以使用 RoadSnappedLocationProvider 取得驅動程式目前的貼齊位置?

需要。在 Android 中,RoadSnappedLocationProvider 預設會在背景執行。

在 iOS 中,如要繼續在背景執行導覽,請實作 GMSRoadSnappedLocationProviderDelegate 的委派,並將屬性 allowsBackgroundLocationUpdates 設為 TRUE

Navigation SDK 是否支援地理圍欄?

否。在導覽環境中,remainingTimeOrdistanceChangeListener 比簡單的地理圍欄具有優勢。地理圍欄可能不會考慮道路幾何圖形,也不得以駕駛員行駛的確切地點為中心。

您可以使用 remainingTimeOrdistanceChangeListener 估算此功能。

  1. 設定閾值以決定回呼頻率。
  2. 查看距離目的地的剩餘距離。

舉例來說,如果將門檻設為 100 公尺,您就會在目的地的距離改變 100 公尺時收到回呼。隨著距離減少,您可以將這個門檻更新為較小的值,並接收更頻繁的回呼。然後檢查剩餘的距離,判斷您是否接近上車/下車地點的距離。

在 iOS 中,實作委派 GMSNavigatorDelegate.didUpdateRemainingDistance 以管理通知之間的距離。

當導航應用程式在背景執行時,我可以停用通知嗎?

需要。在 Android 中,使用 Navigator.setHeadsUpNotificationEnabled 控管通知。此方法含有布林引數。FALSE 會停用通知;TRUE 會啟用通知。

在 iOS 中,將 GMSRoadSnappedLocationProviderDelegate.allowsBackgroundLocationUpdates 設為 NO,即可停用道路固定位置資訊的背景通知。

如要停用其他位置資訊通知的背景處理功能,請呼叫 GMSNavigator.sendsBackgroundNotifications(NO)

交易記錄工具會使用專屬 ID 追蹤上車和下車地點,Google 會記錄這項資訊來計費。詳情請參閱所用平台的「導入測試操作說明」:

如要瞭解帳單交易的編碼相關事宜,請參閱「 可計費交易」。

使用者介面自訂

我可以使用不同顏色標示最佳路線選項嗎?
不可以,目前無法為特定路線選項加上顏色標示。
Navigation SDK 可以顯示最終目的地的預計到達時間嗎?

需要。在 Android 中,使用下列方法:

  1. 使用 Navigator.getTimeAndDistanceList() 擷取所有路線控點的時間和距離。
  2. 使用 NavigationFragment.setEtaCardEnabled(false) 隱藏目前路線控點的預計到達時間。
  3. 轉譯最終目的地預計到達時間。

在 iOS 中,使用下列步驟:

  1. 呼叫 GMSNavigator.routeLegs(read)
  2. 使用最後一段路段時,呼叫 GMSNavigator.timeToNextDestination
  3. 使用 MSMapView.settings.navigationFooterEnabled=NO 設為 FALSE 隱藏目前路線控點的預計到達時間。
  4. 轉譯最終目的地預計到達時間。
如何隱藏預計到達時間的最新資訊?

您可以透過下列方法停用預計到達時間資訊卡:

  • 在 Android 中,使用 navigationView.setEtaCardEnabled(false)
  • 在 iOS 中,使用 GMSMapView.settings.navigationFooterEnabled=NO
哪些 UI 自訂功能可用於頁首和頁尾?

在 Android 中,您可以使用 StylingOptions 設定背景顏色樣式。如要隱藏或顯示標頭和頁尾,請使用 NavigationFragmentsetHeaderEnabledsetFooterEnabled 成員函式。

在 iOS 中,使用 GMSMapView.settings.navigationHeaderPrimaryBackgroundColor 設定背景顏色樣式。如要隱藏或顯示標頭和頁尾,請使用 GMSUISettingsnavigationFooterEnablednavigationHeaderEnabled 屬性。

路線

我可以提供給司機的特定路線或移除替代路線嗎?
不會。根據預設,系統會提供多條路線,最快路線也具有優先等級。 您可以在要求中加入「避免高速公路和收費站」等偏好設定,藉此影響預設路線。新增路線控點也會影響路線。
我可以為應用程式使用者顯示與預設目的地位置不同的標籤嗎?

需要。在 Android 中,建立含有目的地和經緯度自訂標題的 Marker。Navigation SDK 會在 NavigationMap 上顯示自訂標題和座標。

在 iOS 中,您可以建立並顯示目的地的 GMSMarker

我可以使用 Navigation SDK 追蹤已定義路徑的偏差嗎?

需要。在 Android 中,可在建議路線變更或新路徑時,使用 Navigator.setRouteChangedListener 接收通知:

  1. 使用 Navigator.setRouteChangedListener 方法註冊會在路徑上檢查裝置位置的事件監聽器。
  2. 將程式碼加入回呼事件處理常式 onRouteChanged
    • 傳送訊息給應用程式使用者,並提供最新的預計到達時間和距離資訊。
    • 追蹤裝置的位置。
    • [選用] 新增應用程式所需的其他功能,以便在司機偏離指定路線時加以處理。

在 iOS 中,請使用 GMSNavigator 及其委派代表,在建議路線變更或新路徑時接收通知:

  1. 在地圖的檢視控制器上,導入 GMSNavigatorDelegate 通訊協定和 GMSRoadSnappedLocationProviderDelegate 通訊協定。
  2. 實作 GMSNavigatorDelegate.navigatorDidChangeRoute
  3. 使用 GMSNavigatorrouteLegscurrentRouteLeg 屬性存取新路線。
駕駛人可以在不完成路線的情況下退出導航嗎?

需要。在 Android 中,呼叫 Navigator.stopGuidance() 方法來停止導航。

在 iOS 中呼叫 GMSNavigator.clearDestinations

模擬器

模擬工具是否支援變更路線?

需要。在 Android 中呼叫 simulateLocationsAlongNewRoute,模擬包含路徑變更的旅程。simulateLocationsAlongExistingRoute 方法會忽略現有路徑的變更。

在 iOS 中,使用 GMSLocationSimulator.simulateAlongNewRouteToDestinations 模擬包含路徑變更的歷程。如果您預期不會有任何路線變更,可以使用 GMSLocationSimulator.simulateLocationsAlongExistingRouteGMSLocationSimulator.simulateAlongNewRouteToDestinations

Workflows

如何在關閉含有導覽片段的活動後關閉通知?

當活動關閉時,導航通知會繼續顯示。車輛抵達目的地時,導航就會停止,通知也會消失。

如要處理通知的點擊,請使用 Navigator.startGuidance(intent resumeIntent)resume intent 會在應用程式使用者點選通知時觸發。一般而言,系統會從主要 Activity 呼叫 Navigator.startguidance(getIntent()),這個活動會在應用程式使用者點選通知時召回 Activity。