常見問題
產品詳細資料
- 如何顯示 Navigation SDK 服務條款通知?
- 語音導航功能支援哪些語言?
- 駕駛人退出導航模式時,是否會維持方位?
- 開始或變更路線時,是否可使用多邊形?
- 應用程式使用者是否需要安裝 Google 地圖行動版?
- Navigation SDK 是否可識別餐廳和其他目的地附近的停車位?
- Navigation SDK 是否會在接近轉彎點時顯示車道中的交通方向?
問題
網路
資料
- 我可以在開始路線前,擷取行程中的所有停靠站/目的地嗎?
- 路線開始時是否提供即時路線指引?
- 如何向應用程式使用者傳達預估到達時間 (ETA)?
- 如果導航功能不在前景,是否可以使用
RoadSnappedLocationProvider
取得駕駛人目前的固定位置? - Navigation SDK 是否支援地理圍欄?
- 在導航應用程式於背景執行時,我可以停用通知嗎?
UI 自訂
轉送
- 我可以向駕駛人提供特定路線,或移除替代路線嗎?
- 我可以為司機顯示與預設目的地位置不同的目的地標籤嗎?
- 我可以使用 Navigation SDK 追蹤偏離定義路徑的情況嗎?
- 司機是否可以在未完成路線的情況下退出導航?
模擬工具
工作流程
車用機動力服務
- Mobility Services 客戶使用 Navigation SDK 時有何不同?
- 如何得知自己是否為 Mobility Services 客戶?
- Mobility Services 客戶的 Navigation SDK 計費方式為何?
- 哪些 Navigation SDK API 僅供 Mobility Services 客戶使用?
- 如果我是 Mobility Services 客戶,是否也可以使用非 Mobility Services 實作的 Navigation SDK?
產品詳細資料
- 您的應用程式必須實作對話方塊,其中包含每位駕駛人必須接受的 Navigation SDK 服務條款通知。這個對話方塊可讓駕駛人同意《服務條款》。Navigation SDK 會提供條款的文字檔案。
- 在 Android 中,請使用
NavigationApi.showTermsAndConditionsDialog
方法顯示包含條款的對話方塊。 - 在 iOS 中,請呼叫
GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName
。 - Google 地圖行動版支援的任何語言,都會自動提供 Navigation SDK 使用。裝置有預設的系統語言,應用程式無法變更這項設定;不過,應用程式可存取超過 70 種語言。
-
可以。在 Android 中,
LocationListener
啟動後會繼續在背景執行。應用程式會繼續將道路對齊位置,並維持方位。在 iOS 中,如要在背景持續接收位置和方位角位置更新,請實作道路對齊功能,並將
allowsBackgroundLocationUpdates
設為YES
。 -
可以。建立或變更路線時,
RouteChangeListener
會提供折線。 - 否,Navigation SDK 不需要在裝置上安裝 Google 地圖行動版。
- 否,Navigation SDK 目前不提供這項功能。
- 是的。系統預設會顯示交通路線。
問題
- 在 Xcode 12 中,無法正確建構要用於模擬工具的應用程式,如何修復此問題?
-
如要解決這個問題,請開啟 Xcode 專案版本設定,然後只針對「iOS 模擬工具」版本,將
arm64
新增到Excluded Architectures
。詳情請參閱下列 StackOverflow 討論串。
- GMSMapView 無法載入。
-
如果 GMSMapView 無法載入:
- 確認已在 Cloud 控制台中啟用 NavSDK。
- 如果已安裝 Nav SDK,但專案未使用 Nav SDK API,請從二進位檔中移除該 SDK。
網路
- 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,可滿足運輸和物流企業的企業需求。對於 Mobility Services 客戶而言,Navigation SDK 通常會與相關服務搭配使用,用於路線最佳化、派車、工作追蹤、車隊分析等。對於 Mobility Services 客戶,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 設定總覽。
如要進一步瞭解如何使用非 Mobility Services 實作的 Navigation SDK,包括將應用程式從一種實作類型遷移至另一種,請與 Google 帳戶代表聯絡。
注意:如果您目前不是 Mobility Services 客戶,但有興趣進一步瞭解 Mobility Services 的 API 和 SDK 集合,請與 Google 地圖平台銷售團隊聯絡。