SDK for Android 開発者ガイド

交通情報

交通情報は、交通データの可用性に応じ て、Map.setTrafficInfoVisible(true)地図を使用して交通対応のマップ スキームに設定することで、地図に表示できます。 リアルタイムの交通情報をダウンロードするには、トラフィックの視覚化にネットワークデータ接続が必要です。 ただし、トラフィックイベントが期限切れになるか、または可視性が切り替えられるまで、接続せずに引き続きトラフィック情報が表示されることがあります。

現在のトラフィック対応マップスキームは次のとおりです。
  • Map.Scheme.HYBRID_TRAFFIC_DAY
  • Map.Scheme.HYBRID_TRAFFIC_NIGHT
  • Map.Scheme.NORMAL_TRAFFIC_DAY
  • Map.Scheme.NORMAL_TRAFFIC_NIGHT
  • Map.Scheme.CARNAV_TRAFFIC_DAY
  • Map.Scheme.CARNAV_TRAFFIC_NIGHT
  • Map.Scheme.CARNAV_TRAFFIC_HYBRID_DAY
  • Map.Scheme.CARNAV_TRAFFIC_HYBRID_NIGHT

次のいずれかの状況が発生すると、トラフィックの視覚化が更新されます。

  1. 地図は相当な距離だけ移動します
  2. 地図は 1 分間移動されません。 この期間は、を使用して設定でき TrafficUpdater.setRefreshInterval()ます。

トラフィックフロー

次の図は、トラフィックの視覚化の例を示しています。

図 1. 色分けされた行の交通情報

トラフィックフローラインは、次のように色分けされています。

正常です
Amber 高い
非常に高い
ブロック中です

GitHub の交通情報の例

この機能の例について は、 https://github.com/heremaps/を参照してください。

交通情報の表示制御

MapTrafficLayerオブジェクトをMap.getMapTrafficLayer()呼び出して使用することで、トラフィックの表示をさらに制御できます。

MapTrafficLayer は、トラフィックフロー、トラフィックのインシデント、またはルート上のトラフィックを個別に無効にしたり、最小の重大度レベルに従って表示されるトラフィックをフィルタリングしたりできます。

たとえば、「非常に高い」(赤)または「ブロッキング」(黒)のトラフィックフロー回線のみを表示するようにマップを設定するには、次の手順を実行します。

MapTrafficLayer traffic = map.getMapTrafficLayer();
// set the minimum displayed traffic level
traffic.setDisplayFilter(TrafficEvent.Severity.VERY_HIGH);

交通情報の更新を制御してい

デフォルトでは、トラフィックがイネーブルの場合、トラフィックイベントは自動的にビューポイント内にロードされます。 を使用 TrafficUpdater.request(GeoCoordinate, int, Listener)して、ジオコード化された特定のセットの周囲のトラフィックを明示的に取得することもできます。

アプリでのトラフィック更新の実装を完全にカスタマイズするに TrafficUpdater.disableAutoUpdate() は、まずメソッドを介した自動トラフィック更新をオフにしてから、上記のメソッドを使用して、必要な場合にのみトラフィックを取得します。

注 : トラフィックデータのダウンロードおよびデコードには計算コストがかかることがあるため、同じエリアのトラフィックを頻繁にフェッチしないでください。 たとえば、ユーザーの位置を中心にしてのみトラフィックを取得する場合は、 1 分に 1 回以上頻繁に取得しないでください。 ローエンドデバイスでは、 5 分に 1 回など、頻度の低い間隔でデータを取得します。

トラフィックオブジェクトとイベントを選択しています

交通イベントは、地図ジェスチャおよびを使用して選択 OnGestureListener.onMapObjectsSelected(List<ViewObject>)できます。 選択可能なユーザー TrafficEventObject は、ライブトラフィックイベント情報を含み、さまざまな形式でマップに表示されます。 次の図は、 3 つの例を示しています。

図 2. TrafficEventObject の例 : 道路工事
図 3. TrafficEventObject の例 : 事故
図 4. TrafficEventObject の例 : 道路閉鎖

タップされたTrafficEventObjectに関する情報を取得 するには (MapObjects を参照 ) 、次のようにonMapObjectsSelected(List<ViewObject>)を使用します。


private MapGesture.OnGestureListener listener = new MapGesture.OnGestureListener() {
  ...
  @Override
  public boolean onMapObjectsSelected(List<ViewObject> objects) {
    for (ViewObject obj : objects) {
      if (obj.getBaseType() == ViewObject.Type.PROXY_OBJECT) {
        MapProxyObject proxyObj = (MapProxyObject) obj;
        if (proxyObj.getType() == MapProxyObject.Type.TRAFFIC_EVENT) {
          TrafficEventObject trafficEventObj =
                 (TrafficEventObject) proxyObj;
          TrafficEvent trafficEvent =
                  trafficEventObj.getTrafficEvent();
          Toast.makeText(getApplicationContext(), trafficEvent.getEventText(),
                  Toast.LENGTH_LONG).show();
        }
      }
    }

  return true;
};