リアルタイムの運行状況を構成する
リアルタイムの交通状況は、ルート上の交通状況の変化をユーザーに通知し、ユーザーが遭遇した交通状況の変化を報告して確認できるようにする機能の集合です。たとえば、車両事故、交通渋滞、警察や自動速度取締機の存在、工事、車線閉鎖、特定の気象条件などが該当します。このページでは、リアルタイムの交通規制機能とその構成オプションについて説明します。カスタム ナビゲーション 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 Maps SDK ユーザーや 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 要素の上に正しくレイヤリングされます。カスタム コントロールを使用できない場合は、プロンプトの可視性 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)