常見問題

產品特性

問題

網路

資料

使用者介面自訂

轉送

模擬器

Workflows

產品特性

應用程式必須導入對話方塊,內含《Navigation SDK 服務條款》聲明,每個驅動程式都必須接受。這個對話方塊可讓駕駛人同意《服務條款》。條款的文字檔案會隨 Navigation SDK 提供。
在 Android 中,使用 NavigationApi.showTermsAndConditionsDialog 方法顯示含有字詞的對話方塊。
在 iOS 中,呼叫 GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName
Google 地圖行動版支援的任何語言都會自動提供給 Navigation SDK。裝置具有預設系統語言,且應用程式無法變更該設定;然而,應用程式可以存取超過 70 種語言。

是,在 Android 中,LocationListener 啟動後會繼續在背景執行。您的應用程式會繼續在路上貼齊位置,並維持方位。

在 iOS 中,如要繼續在背景接收位置更新通知和方位,請實作道路對齊功能,並將 allowsBackgroundLocationUpdates 設為 YES

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

不需要,裝置不必安裝 Google 地圖 Mobile,Navigation SDK。
不可以。Navigation SDK 目前不提供這項功能。
可以。根據預設,系統會顯示車流量方向。

問題

在 Xcode 12 中,無法正確建構要用於模擬工具的應用程式,如何修復此問題?

如要解決這個問題,請開啟 Xcode 專案版本設定,然後只針對「iOS 模擬工具」版本,將 arm64 新增到 Excluded Architectures

詳情請參閱下列 StackOverflow 討論串

GMSMapView 未載入。

如果 GMSMapView 未載入:

  • 檢查 Cloud 控制台是否已啟用 NavSDK。
  • 如果已安裝 Nav SDK,但專案並未使用 Nav SDK API,請將其從二進位檔中移除。

網路

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 中,如要繼續在背景執行導航,請實作 GMSRoadSnappedLocationProviderListener 的事件監聽器,並將屬性 allowsBackgroundLocationUpdates 設為 TRUE

Navigation SDK 支援地理圍欄嗎?

否。在導覽中,remainingTimeOrdistanceChangeListener 較簡單的地理圍欄沒有優勢。地理圍欄可能不會考慮道路幾何圖形,也不能以駕駛人導航的確切點為中心。

您可以使用 remainingTimeOrdistanceChangeListener 來估算這項功能。

  1. 設定門檻以決定回呼的頻率。
  2. 查看前往目的地的剩餘距離。

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

在 iOS 中實作事件監聽器 GMSNavigatorListener.didUpdateRemainingDistance,以管理通知之間的距離。

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

是,在 Android 中,請使用 Navigator.setHeadsUpNotificationEnabled 控制通知。這個方法包含布林值引數。FALSE 會停用通知,TRUE 則會啟用通知。

在 iOS 中,將 GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates 設為「NO」,即可停用道路封閉位置的背景通知。

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

使用者介面自訂

可以為最佳路線選項加上顏色嗎?
不可以,系統目前不支援為特定路線選項加上顏色標示。
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
頁首和頁尾資訊卡提供哪些使用者介面自訂設定?

在 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. 在地圖的檢視控制器上,實作 GMSNavigatorListener 通訊協定和 GMSRoadSnappedLocationProviderListener 通訊協定。
  2. 實作 GMSNavigatorListener.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 會在應用程式使用者點選通知時觸發。一般而言,系統會從主要活動呼叫 Navigator.startguidance(getIntent()),應用程式會在使用者點選通知時喚回 Activity。