選取平台: 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,取代標準的回報按鈕。當使用者按下自訂按鈕時,您可以呼叫 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_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)