設定即時中斷
「即時中斷」是一系列功能,可提醒使用者路線上的中斷情形,並允許使用者回報及驗證遇到的中斷情形。例如車禍、交通壅塞、警察和測速照相機、施工、車道封閉,以及特定天氣狀況。本頁說明即時中斷功能和設定選項,包括使用自訂導覽使用者介面的應用程式注意事項。
即時交通異動功能
Navigation SDK 包含下列即時中斷功能,可做為核心導覽體驗的一部分:這些功能預設為啟用,且可供設定。以下各節將進一步說明這些功能和可用的設定選項。
路線沿途的互動式中斷標註
應用程式顯示路線時 (無論是路線總覽或導航期間),路線上出現的任何中斷情形都會以標註形式顯示。啟用車流量圖層後,地圖上也會顯示偏離路線的交通中斷狀況。附註會顯示圖示,指出中斷類型。
您可以使用 setTrafficPromptsEnabled 控管路線沿途的干擾通知顯示設定,這項設定也會控管使用者接近干擾時的自動警示顯示設定。
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
使用者輕觸標註時顯示中斷詳細資料
輕觸中斷通知,即可開啟資訊卡查看詳細資料。無論是路線內或路線外的標註,都會顯示這類資訊,但路線外的標註只會在啟用交通資訊圖層時顯示。這張資訊卡會顯示中斷類型、上次回報時間,有時還會提供選項,讓您投票決定中斷情形是否仍然存在。資訊卡類型和設定選項會因使用者是否處於主動導航狀態而異。
在開始導航前,路徑總覽會顯示資訊卡
開始導航前,使用者可以輕觸地圖上或路線總覽中的路線內/外標註,開啟資訊卡。如要顯示路線外標示,必須啟用車流量圖層。資訊卡會提供更多有關中斷的詳細資料。
您可以透過 setTrafficIncidentCardsEnabled 控制使用者是否能輕觸路線總覽中的交通中斷標示,以顯示更多資訊。
// Using the SupportNavigationFragment mNavFragment.setTrafficIncidentCardsEnabled(true); // Using the NavigationView navigationView.setTrafficIncidentCardsEnabled(true);
導航期間顯示的標註資訊卡
在導航期間,使用者可以輕觸路線上或路線外的中斷通知,開啟資訊卡。資訊卡會顯示中斷類型和上次回報時間,並提供按鈕供使用者投票,指出中斷情形是否仍然存在。
使用者在路線上或路線外 5 公里內,都可以針對中斷情況投票 (道路封閉除外)。Google 會處理這些投票結果,判斷是否要繼續顯示中斷情形。其他 Google 地圖和 Navigation SDK 使用者也可能會在地圖上看到投票結果。
您可以使用 setTrafficPromptsEnabled,在導航期間控管交通中斷標示的顯示和輕觸功能,這項方法也會控管路線沿途的標示顯示,以及使用者接近交通中斷時的自動警示顯示。
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
導航期間,系統會自動發出異動快訊,並提供投票功能
在導航期間,如果使用者接近路線上的中斷點,系統會顯示提示,提供中斷點的相關資訊,以及用於投票表決中斷點是否仍然存在。Google 會處理使用者提交的票選結果,並可能在 Google 地圖和 Navigation SDK 中向其他使用者顯示,也會用來判斷是否要繼續顯示中斷資訊。
您可以使用 setTrafficPromptsEnabled 在導覽期間設定顯示警示提示,這項設定也會控管路線沿途的標註顯示方式。
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
導航期間回報交通異動
在操作模式啟用期間,導航使用者介面會顯示按鈕,方便使用者回報路線上的新狀況。使用者輕觸按鈕後,系統會顯示可回報的干擾類型選單。使用者提交的檢舉內容會由 Google 處理,並可能顯示在地圖上,供其他 Google 地圖和 Navigation SDK 使用者查看。
回報道路封閉後,系統可能會顯示替代路線,避開封鎖路段,並提示使用者確認或拒絕重新規劃路線。這項功能視裝置支援情形而定。
顯示或隱藏標準報表按鈕
您可以使用
setReportIncidentButtonEnabled
,在導覽期間設定標準報表按鈕的顯示狀態。
// Enables the incident reporting button to show in situations where incident // reporting is possible. // Using the SupportNavigationFragment mNavFragment.setReportIncidentButtonEnabled(true); // Using the NavigationView navigationView.setReportIncidentButtonEnabled(true);
新增自訂檢舉按鈕
您可以將自訂的故障回報按鈕新增至導覽 UI,取代標準的故障回報按鈕。使用者點選自訂按鈕時,您可以呼叫 showReportIncidentsPanel 方法,觸發顯示檢舉選單。新增自訂檢舉按鈕前,請先呼叫 isIncidentReportingAvailable,確認應用程式處於有效導覽狀態,且使用者位於檢舉功能已啟用的國家/地區。如果任一條件不符,就不會顯示報表選單。
Button customReportIncidentButton = findViewById(R.id.custom_reporting_button); // Check if reporting is available before displaying your button customReportIncidentButton.setVisibility( navigationView.isReportingAvailable ? View.VISIBLE : View.GONE); // Trigger the reporting flow if the button is clicked customReportIncidentButton.setOnClickListener(v -> navigationView.showReportIncidentsPanel());
使用自訂導覽 UI
如果 Navigation SDK 的實作項目包含自訂 UI 元素,您必須考量即時中斷元素,以免發生衝突。
檢舉按鈕位置
依預設,中斷回報按鈕會顯示在地圖的底部/尾端角落,如果語言是從左至右書寫,按鈕會顯示在右側;如果語言是從右至左書寫,按鈕會顯示在左側。如要移動檢舉按鈕,為自訂 UI 元素騰出空間,請新增BOTTOM_END_BELOW 或 FOOTER 自訂控制項,將按鈕在畫面上的位置往上推。在自訂控制項中放置自己的自訂 UI,也能確保 Navigation SDK 顯示的任何提示,都會正確疊加在顯示的自訂 UI 元素上。如果無法使用自訂控制項,請使用 Prompt Visibility API 管理潛在的 UI 衝突。
Prompt Visibility API (實驗性)
您可以透過提示顯示設定 API 新增監聽器,在 Navigation SDK UI 元素即將顯示前和移除後立即接收回呼,避免 Navigation SDK 產生的 UI 元素與自訂 UI 元素發生衝突。您可以接收即時中斷元素的回呼,包括資訊卡、提示和中斷回報選單,以及 Navigation SDK 產生的其他通知。// Sample listener val listener: PromptVisibilityChangedListener = { isVisible -> if (isVisible) { customFab.visibility = false customFooter.visibility = false moveSomeOtherThingsAround() } else { customFab.visibility = true customFooter.visibility = true moveSomeThingsBackToWhereTheyWereBefore() } } // Inside onCreate() navigationView.addPromptVisibilityChangedListener(listener) // Inside onDestroy() navigationView.removePromptVisibilityChangedListener(listener)