常見問題

產品詳細資料

問題

網路

資料

UI 自訂

轉送

模擬工具

工作流程

車用機動力服務

產品詳細資料

應用程式必須實作對話方塊,顯示 Navigation SDK 服務條款通知,且每位駕駛人都必須接受。這個對話方塊會顯示《服務條款》,讓駕駛人有機會同意。Navigation SDK 隨附條款文字檔。
在 Android 中,使用 NavigationApi.showTermsAndConditionsDialog 方法顯示含有條款的對話方塊。
在 iOS 中,呼叫 GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName
Navigation SDK 會自動支援 Google 地圖行動版支援的所有語言。 裝置有預設系統語言,應用程式無法變更這項設定,但應用程式可存取超過 70 種語言。

可以。在 Android 中,LocationListener 一旦啟動,就會持續在背景執行。應用程式會繼續將位置資訊對應到道路上,並維持方位。

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

可以。建立或變更路線時,RouteChangeListener 會提供折線。

不需要,Navigation SDK 不要求裝置安裝 Google 地圖行動版。
否,Navigation SDK 目前不提供這項功能。
可以。系統預設會顯示流量方向。

問題

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

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

詳情請參閱下列 StackOverflow 討論串

GMSMapView 無法載入。

如果 GMSMapView 未載入:

  • 確認已在 Cloud 控制台中啟用 NavSDK。
  • 如果已安裝 Navigation SDK,但專案未使用 Navigation 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)

UI 自訂

我可以為最佳路線選項設定顏色代碼嗎?
否。目前不支援為特定路線選項加上顏色。
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. 在地圖的檢視控制器上,導入 GMSNavigatorListener 通訊協定和 GMSRoadSnappedLocationProviderListener 通訊協定。
  2. 實作 GMSNavigatorListener.navigatorDidChangeRoute
  3. 使用 GMSNavigatorrouteLegscurrentRouteLeg 屬性存取新路徑。
司機是否可以在未完成路線的情況下結束導航?

可以。在 Android 中,呼叫 Navigator.stopGuidance() 方法即可停止導覽。

在 iOS 中,呼叫 GMSNavigator.clearDestinations

模擬工具

模擬器是否支援路線變更?

可以。在 Android 中,呼叫 simulateLocationsAlongNewRoute 模擬包含路線變更的行程。simulateLocationsAlongExistingRoute 方法會忽略現有路徑的變更。

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

工作流程

關閉含有導覽片段的活動後,如何取消顯示通知?

導航通知會在導航期間保持顯示,即使活動已關閉也一樣。車輛抵達目的地時,導航會停止,通知也會消失。

如要處理通知的點擊事件,請使用 Navigator.startGuidance(intent resumeIntent)。 應用程式使用者點選通知時,系統會觸發 resume intent。 通常,Navigator.startguidance(getIntent()) 是從主要活動呼叫,當應用程式使用者點選通知時,系統會回呼活動。

車用機動力服務

Mobility Services 客戶使用 Navigation SDK 時有何不同?

Google 地圖平台行動服務提供一系列 API 和 SDK,可協助運輸和物流企業滿足需求。對於行動服務客戶,Navigation SDK 通常會與相關服務搭配使用,以進行路線最佳化、調度、工作追蹤、車隊分析等。行動服務客戶的 Navigation SDK 計費方式也不同。詳情請參閱 Mobility Services 說明文件。

行動裝置產品僅適用於特定客戶。詳情請洽您的業務代表。

如何判斷我是否為 Mobility Services 客戶?
如果不確定是否以 Mobility Services 客戶身分導入 Navigation SDK,請在程式碼中尋找 ReportBillableEvent 呼叫。只有 Mobility Services 客戶應呼叫 ReportBillableEvent 方法。

行動服務客戶的 Navigation SDK 計費方式為何?
如果是行動服務客戶,Navigation SDK 的計費和定價取決於您與 Google 地圖平台簽訂的服務協議。如要瞭解如何驗證系統是否正確收取 Mobility Services 費用,請參閱「帳單驗證」。如要進一步瞭解 Mobility Services 的計費方式,請與業務代表聯絡。

哪些 Navigation SDK API 只能由 Mobility Services 客戶使用?

Navigation SDK 中有幾項 API 僅供 Mobility Services 客戶使用,Google 會按交易次數向這類客戶收費。如果您不是 Mobility Services 客戶,下列方法不會執行任何作業:

如果我是 Mobility Services 客戶,是否也能使用 Navigation SDK 的非 Mobility Services 實作方式?

可以,車用機動力服務客戶可以同時使用 Navigation SDK 的車用機動力服務和非車用機動力服務實作。不過,應用程式一次只能使用一種導入類型。您也需要建立新的 Google Cloud 專案、帳單帳戶和 API 金鑰,與您用於 Mobility Services 實作的項目分開。詳情請參閱 Navigation SDK 設定總覽

如要進一步瞭解如何使用 Navigation SDK 的非 Mobility Services 實作方式,包括將應用程式從一種實作類型遷移至另一種,請與您的 Google 帳戶代表聯絡。

注意:如果您不是行動服務客戶,但想進一步瞭解行動服務 API 和 SDK 集合,請與 Google 地圖平台銷售團隊聯絡