リアルタイムの運行状況の乱れを設定する
リアルタイムの運行状況は、ルート上の運行状況をユーザーに通知し、ユーザーが遭遇した運行状況を報告して確認できるようにする機能の集合です。交通障害の例としては、車両事故、交通渋滞、警察や自動速度取締機の存在、工事、車線規制、特定の気象条件などがあります。このページでは、リアルタイムの運行状況の乱れに関する機能とその構成オプションについて説明します。これには、カスタム ナビゲーション 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);
ナビゲーション中のコールアウト情報カード
ナビゲーション中に、ルート上またはルート外の交通障害のコールアウトをタップすると、情報カードが開きます。このカードには、障害の種類と最後に報告された時刻が表示されます。また、障害がまだ発生しているかどうかをユーザーが投票するためのボタンも表示されます。
投票は、ユーザーから 5 km 以内のルート上およびルート外の障害(通行止めを除く)に対して行うことができます。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_BELOW または FOOTER カスタム コントロールを追加します。これにより、ボタンの位置が画面上で上に移動します。カスタム コントロール内に独自のカスタム UI を配置すると、Navigation SDK によって表示されるプロンプトが、表示中にカスタム UI 要素の上に適切に重ねて表示されます。カスタム コントロールを使用できない場合は、Prompt Visibility API を使用して、UI の競合を管理します。
Prompt Visibility API(試験運用版)
Prompt Visibility 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)