選取平台: Android iOS

設定即時中斷

即時交通異常功能是一組功能,可提醒使用者沿途的交通異常狀況,並讓使用者回報及確認遇到的交通異常狀況。中斷服務的例子包括車禍、交通擁塞、警察和測速照相機、施工、車道封閉和特定天氣狀況。本頁面將說明即時中斷功能及其設定選項,包括使用自訂導覽 UI 的應用程式應考量的事項。

即時中斷功能

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);

在導航期間顯示資訊卡

在導航期間,如果路線上出現中斷資訊說明,使用者可以輕觸該說明,顯示資訊卡,提供中斷情形的更多資訊,包括中斷類型和上次回報時間,以及可用來投票表達中斷情形是否仍存在的按鈕。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);

在導航期間回報中斷情形

在使用中導航模式期間,導航 UI 會顯示一個按鈕,讓使用者回報路線上的新中斷情形。使用者輕觸按鈕後,畫面上會顯示選單,列出可回報的干擾類型。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

如果 Navigation SDK 的導入作業包含自訂 UI 元素,您需要考慮實施即時中斷元素,以免發生衝突。

報表按鈕位置

根據預設,中斷服務回報按鈕會位於地圖的底端/尾角落,如果是從左至右書寫的語言,則位於右側;如果是從右至左書寫的語言,則位於左側。如果您需要移動報表按鈕,為自訂 UI 元素騰出空間,請新增 BOTTOM_END_BELOWFOOTER 自訂控制項,這樣做可將按鈕的位置推至畫面上方。將自訂 UI 放入自訂控制項中,也可以確保 Navigation SDK 顯示的任何提示,在顯示時會正確疊加在自訂 UI 元素上。如果無法使用自訂控制項,請使用 提示顯示 API管理潛在的 UI 衝突。

Prompt Visibility API (實驗功能)

透過提示可見度 API,您可以在 Navigation SDK 產生的 UI 元素與您自訂的 UI 元素之間避免發生衝突,方法是新增事件監聽器,在 Navigation SDK 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)