常見問題
產品詳細資料
- 如何顯示 Navigation SDK 服務條款通知?
- 語音導覽支援哪些語言?
- 駕駛人退出導覽模式時,是否會維持方位?
- 開始或變更路線時,是否可以使用折線?
- 應用程式使用者是否需要安裝 Google 地圖行動版?
- Navigation SDK 能否識別餐廳和其他目的地附近的停車位?
- Navigation SDK 是否會在接近轉彎處時,顯示車道中的車流方向?
問題
網路
資料
- 我可以在開始路線前,擷取行程中的所有停靠點/目的地嗎?
- 路線開始時是否提供即時路線導航?
- 如何向應用程式使用者傳達預計抵達時間 (ETA)?
- 如果導航功能不在前景,是否可以使用
RoadSnappedLocationProvider
取得駕駛人目前的對應位置? - Navigation SDK 是否支援地理圍欄?
- 導航應用程式在背景執行時,我可以停用通知嗎?
UI 自訂
轉送
- 我可以為司機提供特定路線,或移除替代路線嗎?
- 我可以向司機顯示與預設目的地位置不同的目的地標籤嗎?
- 我可以使用 Navigation SDK 追蹤偏離定義路徑的情況嗎?
- 司機可以在未完成路線的情況下結束導航嗎?
模擬工具
工作流程
車用機動力服務
- 行動服務客戶使用 Navigation SDK 時有何不同?
- 如何判斷自己是否為 Mobility Services 客戶?
- Mobility Services 客戶的 Navigation SDK 計費方式為何?
- 哪些 Navigation SDK API 只能供 Mobility Services 客戶使用?
- 如果我是 Mobility Services 客戶,是否也能使用 Navigation SDK 的非 Mobility Services 實作方式?
產品詳細資料
- 應用程式必須實作對話方塊,顯示 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 中,請按照下列步驟向應用程式使用者提供預計抵達時間資訊:
- 使用
Navigator.getTimeAndDistanceList()
擷取所有路線控點的時間和距離。 - 將這項資訊轉送至用戶端應用程式,做法與轉送司機預計抵達時間相同。
在 iOS 中,請按照下列步驟向應用程式使用者提供預計抵達時間資訊:
- 使用
Navigator.getRouteSegments()
擷取旅程中的路段。 - 針對每個旅程路段呼叫
GMSNavigator.timeToNextDestination
。 - 將時間資訊轉送至用戶端應用程式,做法與轉送駕駛人預計抵達時間相同。
- 使用
-
如果導航功能不在前景,是否可以使用
RoadSnappedLocationProvider
取得駕駛人目前的對應位置? -
可以。在 Android 中,
RoadSnappedLocationProvider
預設會在背景執行。在 iOS 中,如要讓導覽功能在背景執行,請導入
GMSRoadSnappedLocationProviderListener
的監聽器,並將allowsBackgroundLocationUpdates
屬性設為TRUE
。 - Navigation SDK 是否支援地理圍欄?
-
否。就導覽而言,
remainingTimeOrdistanceChangeListener
比地理圍欄更具優勢。地理圍欄可能不會考量道路幾何形狀,也不會以駕駛人導航的確切地點為中心。您可以使用
remainingTimeOrdistanceChangeListener
模擬這項功能。- 設定門檻,決定回呼的頻率。
- 查看目的地剩餘距離。
舉例來說,如果將門檻設為 100 公尺,當與目的地的距離變更 100 公尺時,您就會收到回呼。距離縮短時,您可以將這個門檻更新為較小的值,並更頻繁地接收回呼。接著,請檢查剩餘距離,判斷你是否已接近取貨/還車地點。
在 iOS 中,實作事件監聽器
GMSNavigatorListener.didUpdateRemainingDistance
,管理通知之間的距離。 - 導航應用程式在背景執行時,可以停用通知嗎?
-
可以。在 Android 裝置上,使用
Navigator.setHeadsUpNotificationEnabled
控制通知。這個方法會採用布林值引數。FALSE
停用通知;TRUE
啟用通知。在 iOS 中,將
GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates
設為 NO,即可停用道路對齊位置資訊的背景通知。如要停用其他位置通知的背景處理作業,請呼叫
GMSNavigator.sendsBackgroundNotifications(NO)
。
UI 自訂
- 我可以為最佳路線選項設定顏色代碼嗎?
- 否。目前不支援為特定路線選項加上顏色。
- Navigation SDK 能否顯示最終目的地的預計抵達時間?
-
可以。在 Android 中,請使用下列方法:
- 使用
Navigator.getTimeAndDistanceList()
擷取所有路線控點的時間和距離。 - 使用
NavigationFragment.setEtaCardEnabled(false)
隱藏目前中途點的預計到達時間。 - 顯示最終目的地的預計抵達時間。
在 iOS 中,請使用下列項目:
- 呼叫
GMSNavigator.routeLegs(read)
。 - 最後一趟行程,請呼叫
GMSNavigator.timeToNextDestination
。 - 使用
MSMapView.settings.navigationFooterEnabled=NO
將目前路徑點的預計到達時間設為 FALSE,即可隱藏。 - 顯示最終目的地的預計抵達時間。
- 使用
- 如何隱藏預計抵達時間更新?
-
如要停用預計抵達時間資訊卡,請使用下列方法:
- 在 Android 中,請使用
navigationView.setEtaCardEnabled(false)
。 - 在 iOS 中,請使用
GMSMapView.settings.navigationFooterEnabled=NO
。
- 在 Android 中,請使用
-
在 Android 中,您可以使用
StylingOptions
設定背景顏色樣式。如要隱藏或顯示頁首和頁尾,請使用NavigationFragment
的setHeaderEnabled
和setFooterEnabled
成員函式。在 iOS 中,請使用
GMSMapView.settings.navigationHeaderPrimaryBackgroundColor
設定背景顏色樣式。如要隱藏或顯示頁首和頁尾,請使用GMSUISettings
的navigationFooterEnabled
和navigationHeaderEnabled
屬性。
轉送
- 我可以為司機提供特定路線,或移除替代路線嗎?
- 否。系統預設會提供多條路線,並優先顯示最快的路線。 您可以在要求中加入偏好設定 (例如「避開高速公路和收費路段」),影響預設路線。新增途中的航點也會影響路線。
- 我可以向應用程式使用者顯示與預設目的地位置不同的目的地標籤嗎?
-
可以。在 Android 中,請建立
Marker
,並為目的地和經緯度設定自訂標題。Navigation SDK 會在NavigationMap
上顯示自訂標題和座標。在 iOS 中,您會建立並顯示目的地的
GMSMarker
。 - 我可以使用 Navigation SDK 追蹤偏離定義路徑的情況嗎?
-
可以。在 Android 中,使用
Navigator.setRouteChangedListener
接收路線變更或新路線建議的通知:- 使用
Navigator.setRouteChangedListener
方法註冊事件監聽器,檢查路線上的裝置位置。 - 將程式碼新增至回呼事件處理常式
onRouteChanged
:- 向應用程式使用者傳送訊息,提供更新後的預計到達時間和距離資訊。
- 追蹤裝置位置。
- [選用] 新增應用程式所需其他功能,以便在駕駛人偏離預定路線時處理相關情況。
在 iOS 中,使用
GMSNavigator
及其監聽器,在路線變更或系統建議新路線時接收通知:- 在地圖的檢視控制器上,導入
GMSNavigatorListener
通訊協定和GMSRoadSnappedLocationProviderListener
通訊協定。 - 實作
GMSNavigatorListener.navigatorDidChangeRoute
。 - 使用
GMSNavigator
的routeLegs
和currentRouteLeg
屬性存取新路徑。
- 使用
-
可以。在 Android 中,呼叫
Navigator.stopGuidance()
方法即可停止導覽。在 iOS 中,呼叫
GMSNavigator.clearDestinations
。
模擬工具
- 模擬器是否支援路線變更?
-
可以。在 Android 中,呼叫
simulateLocationsAlongNewRoute
模擬包含路線變更的行程。simulateLocationsAlongExistingRoute
方法會忽略現有路徑的變更。在 iOS 中,使用
GMSLocationSimulator.simulateAlongNewRouteToDestinations
模擬包含路線變更的行程。如果您預期不會有任何路徑變更,可以使用GMSLocationSimulator.simulateLocationsAlongExistingRoute
或GMSLocationSimulator.simulateAlongNewRouteToDestinations
。
工作流程
- 關閉含有導覽片段的活動後,如何取消顯示通知?
-
導航通知會在導航期間保持顯示,即使活動已關閉也一樣。車輛抵達目的地時,導航會停止,通知也會消失。
如要處理通知的點擊事件,請使用
Navigator.startGuidance(intent resumeIntent)
。 應用程式使用者點選通知時,系統會觸發resume intent
。 通常,Navigator.startguidance(getIntent())
是從主要活動呼叫,當應用程式使用者點選通知時,系統會回呼活動。
車用機動力服務
Google 地圖平台行動服務提供一系列 API 和 SDK,可協助運輸和物流企業滿足需求。對於行動服務客戶,Navigation SDK 通常會與相關服務搭配使用,以進行路線最佳化、調度、工作追蹤、車隊分析等。行動服務客戶的 Navigation SDK 計費方式也不同。詳情請參閱 Mobility Services 說明文件。
行動裝置產品僅適用於特定客戶。詳情請洽您的業務代表。
ReportBillableEvent
呼叫。只有 Mobility Services 客戶應呼叫 ReportBillableEvent
方法。
Navigation SDK 中有幾項 API 僅供 Mobility Services 客戶使用,Google 會按交易次數向這類客戶收費。如果您不是 Mobility Services 客戶,下列方法不會執行任何作業:
可以,車用機動力服務客戶可以同時使用 Navigation SDK 的車用機動力服務和非車用機動力服務實作。不過,應用程式一次只能使用一種導入類型。您也需要建立新的 Google Cloud 專案、帳單帳戶和 API 金鑰,與您用於 Mobility Services 實作的項目分開。詳情請參閱 Navigation SDK 設定總覽。
如要進一步瞭解如何使用 Navigation SDK 的非 Mobility Services 實作方式,包括將應用程式從一種實作類型遷移至另一種,請與您的 Google 帳戶代表聯絡。
注意:如果您不是行動服務客戶,但想進一步瞭解行動服務 API 和 SDK 集合,請與 Google 地圖平台銷售團隊聯絡。