常見問題
產品詳細資料
- 如何顯示 Navigation SDK 服務條款通知?
- 語音導引支援哪些語言?
- 駕駛人退出導航模式時,是否會維持方位?
- 開始或變更路線時,是否可以使用折線?
- 應用程式使用者是否需要安裝 Google 地圖行動應用程式?
- Navigation SDK 能否辨識餐廳和其他目的地附近的停車場?
- Navigation SDK 是否會在接近轉彎處時,顯示車道的車流方向?
問題
網路
資料
- 可以在開始路線前,擷取行程中的所有停靠站/目的地嗎?
- 路線起點是否提供即時路線導引?
- 如何向應用程式使用者傳達預計到達時間 (ETA)?
- 如果導航功能不在前景執行,是否可以使用
RoadSnappedLocationProvider取得駕駛人目前貼齊的位置? - Navigation SDK 是否支援地理圍欄?
- 導航應用程式在背景執行時,可以停用通知嗎?
UI 自訂
轉送
- 我可以為駕駛員提供特定路線,或移除替代路線嗎?
- 我可以向司機顯示與預設目的地位置不同的目的地標籤嗎?
- 可以使用 Navigation SDK 追蹤偏離預定路線的情況嗎?
- 駕駛人是否可以在未完成路線的情況下退出導航?
- Navigation SDK 是否支援卡車和大型車輛的路線規劃和導航功能?
手機模擬器
Workflows
行動服務
- Mobility Services 客戶使用 Navigation SDK 有何不同?
- 如何判斷自己是否為行動服務客戶?
- 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。 - 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。
- 如果已安裝 Nav SDK,但專案未使用 Nav SDK API,請從二進位檔中移除。
網路
- Navigation SDK 如何處理連線不佳的問題?
- Navigation SDK 會預先快取每趟行程的路線。 預先快取的資訊包括 15 到 20 分鐘的路線資訊,以及駕駛人偏離路線時的替代路線。Navigation SDK 會使用裝置 GPS 和感應器估算位置。
- 是否有離線模式?
- 否,Navigation 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。 - Navigation SDK 是否支援卡車和大型車輛的路線規劃和導航功能?
-
可以。有了大型車輛路線規劃 (LVR) 功能,您就能將 Routes API 或 Route Optimization API 產生的卡車專用路線權杖,傳遞至 Navigation SDK。SDK 提供即時路況導航功能,並會顯示路線標註 (高度、重量、危險物質和卡車限制),以及在動態重新規劃路線時,維持車輛的實體設定檔。詳情請參閱「瀏覽大型車輛路線」。
手機模擬器
- 模擬器是否支援路線變更?
-
可以。在 Android 中,呼叫
simulateLocationsAlongNewRoute即可模擬包含路線變更的行程。simulateLocationsAlongExistingRoute方法會忽略現有路徑的變更。在 iOS 中,請使用
GMSLocationSimulator.simulateAlongNewRouteToDestinations模擬包含路線變更的行程。如果您預期路徑不會有任何變更,可以使用GMSLocationSimulator.simulateLocationsAlongExistingRoute或GMSLocationSimulator.simulateAlongNewRouteToDestinations。
Workflows
- 關閉包含導覽片段的活動後,如何關閉通知?
-
導航通知在導航期間會持續顯示,直到活動關閉為止。車輛抵達目的地時,導航就會停止,通知也會消失。
如要處理通知點擊,請使用
Navigator.startGuidance(intent resumeIntent)。當應用程式使用者點選通知時,系統會觸發resume intent。一般來說,Navigator.startguidance(getIntent())是從主要 Activity 呼叫,當應用程式使用者點選通知時,系統會重新叫用該 Activity。
行動服務
Google 地圖平台行動服務提供一系列 API 和 SDK,可協助運輸和物流企業滿足業務需求。Mobility Services 客戶通常會搭配使用 Navigation SDK 和相關服務,進行路線最佳化、調度、工作追蹤、車隊數據分析等。此外,Mobility Services 客戶的 Navigation SDK 計費方式也不同。詳情請參閱行動服務說明文件。
行動產品僅開放給特定客戶使用。如要深入瞭解,請與您的業務代表聯絡。
ReportBillableEvent 呼叫。只有 Mobility Services 客戶應呼叫 ReportBillableEvent 方法。
Navigation SDK 中有數個 API 僅供車輛調度管理服務客戶使用,Google 會按交易次數向這些客戶收費。如果您不是 Mobility Services 客戶,下列方法不會執行任何作業:
可以,Mobility Services 客戶可以同時使用 Mobility Services 和非 Mobility Services 導入的 Navigation SDK。不過,您一次只能在應用程式中使用一種導入類型。您也需要建立新的 Google Cloud 雲端專案、帳單帳戶和 API 金鑰,與 Mobility Services 實作項目使用的項目分開。詳情請參閱「Navigation SDK 設定總覽」。
如要進一步瞭解如何使用非 Mobility Services 導入的 Navigation SDK,包括將應用程式從一種導入類型遷移至另一種,請與 Google 帳戶代表聯絡。
注意:如果您不是 Mobility Services 客戶,但想進一步瞭解 Mobility Services 的 API 和 SDK 組合,請與 Google Maps Platform 業務團隊聯絡。