リアルタイムの運行状況を構成する
リアルタイムの運行状況は、ルート上の運行状況についてユーザーにアラートを送信し、ユーザーが遭遇した運行状況を報告して確認できるようにする機能の集合です。たとえば、車両事故、交通渋滞、警察や自動速度取締機の存在、工事、車線規制、特定の気象条件などが該当します。このページでは、リアルタイムの交通障害機能とその構成オプションについて説明します。カスタム ナビゲーション UI を使用するアプリに関する考慮事項も含まれます。
リアルタイムの運行情報機能
Navigation SDK には、コア ナビゲーション エクスペリエンスの一部として、次のリアルタイムの交通情報機能が含まれています。これらの機能は構成可能で、デフォルトで有効になっています。以降のセクションでは、機能と使用可能な構成オプションについて詳しく説明します。
ルート沿いのインタラクティブな運行情報
アプリがルートをルートの概要またはナビゲーション実行中に表示すると、現在の交通情報がルート沿いの吹き出しとして表示されます。吹き出しには、障害の種類を示すアイコンが表示されます。
setTrafficPromptsEnabled を使用して、ルート沿いの交通障害の吹き出しの表示を制御できます。また、ユーザーが交通障害に近づいたときに自動アラートを表示することも制御できます。
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
ユーザーが吹き出しをタップしたときにサービス停止の詳細を表示する
吹き出しをタップすると、障害の種類、最後に報告された時間、場合によっては障害がまだ発生しているかどうかを投票するオプションなど、障害に関する詳細情報が記載された情報カードが表示されます。ユーザーがアクティブなナビゲーションを使用しているかどうかによって、2 種類の情報カードが表示されることがあります。構成オプションは種類ごとに異なります。
アクティブなナビゲーションを開始する前のルートの概要に表示される吹き出し情報カード
ユーザーがルートの概要で吹き出しをタップすると、アクティブなナビゲーションを開始する前に、遅延に関する詳細情報が記載された情報カードが表示されます。
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 マップとナビゲーション 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 要素の上に正しくレイヤリングされるようになります。カスタム コントロールを使用できない場合は、プロンプトの可視性 API を使用して、UI の競合の可能性を管理します。
Prompt Visibility API(試験運用版)
プロンプトの可視性 API を使用すると、Navigation SDK によって生成された UI 要素と独自のカスタム UI 要素の競合を回避できます。この API では、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)