交通状況の確認
1 行のコードでマップ レイヤー 状態TRAFFIC_INCIDENTS
を有効にすることで、マップ上の交通障害を視覚化できます。 HERE SDK は 、レイヤーTRAFFIC_FLOW
を追加することで現在のトラフィック状況を確認するための別のレイヤーもサポートしています。
また、経路情報 セクションに示されているように、インスタンスRoute
に沿ったトラフィックを指定することもできます。
リアルタイムの交通状況とインシデントをマップに表示
マップ レイヤーの状態TRAFFIC_INCIDENTS
を有効にすると、マップ上の交通障害を簡単に視覚化できます。 HERE SDK は、現在のトラフィック状況を確認するための別のレイヤーもサポートしています。 マップ上のレイヤーを表示または非表示にする方法については、以下の例を参照してください。
スクリーンショット: マップ上に交通障害を表示。 レイヤーを設定すると、マップの表示領域が自動的に更新されます。 そのため、マップをあらゆる方向に自由に移動して、最新の交通障害を確認できます。
多くの状況で、ドライバーは、都市内外での現在の渋滞状況に基づいて最速ルートを探しています。 HERE SDK を使用すると、現在のすべての渋滞を保持しているレイヤーをさまざまな色の線で表示して、渋滞の重大度をリアルタイムで常に更新することができます。 この機能を使用するには、オンライン接続が必要です。また、より多くのデータを消費します。 ただし、交通渋滞ルートはマップのタイルの一部として表示されるため、高性能です。
これらの交通情報は、いくつかのコード行でマップ上に表示することも、単独で表示することもできます。
try {
mapView.getMapScene().setLayerState(MapLayer.TRAFFIC_FLOW, LayerState.ENABLED);
mapView.getMapScene().setLayerState(MapLayer.TRAFFIC_INCIDENTS, LayerState.ENABLED);
} catch (MapScene.MapSceneException e) {
Toast.makeText(context, "Exception when enabling traffic visualization.", Toast.LENGTH_LONG).show();
}
新しいレイヤー状態の設定は同期的に実行されますが、以前にロードしておく必要がある有効なマップ シーンが必要です。 また、新しいマップ シーンの読み込み中に新しいレイヤーの状態を設定すると、例外が発生する可能性があります。 レイヤーを非表示にする場合 LayerState.DISABLED
は、ではなく、で上記のレイヤーを呼び出す LayerState.ENABLED
ことができます。
トラフィックフローラインは、次のように色分けされています。
- 緑 : 通常 の交通状況
- 黄色 / 黄色 : 渋滞しています
- 赤 : 交通量が非常に多い
- 黒 : トラフィックのブロック
使用例は、トラフィック のアプリの一部として、 GitHub で入手可能。
MapSceneConfig を使用すると、新しいマップ シーンで複数のレイヤーを有効にできます
を使用してマップ シーンをロードする方が便利な場合 MapSceneConfig
があります。 たとえば、トラフィックインシデント、トラフィックフロー、 および新しいマップ シーンの表示を同時に有効にする場合は、次のように呼び出します。
MapSceneConfig mapSceneConfig = new MapSceneConfig();
mapSceneConfig.mapLayers.put(MapLayer.TRAFFIC_FLOW, LayerState.ENABLED);
mapSceneConfig.mapLayers.put(MapLayer.TRAFFIC_INCIDENTS, LayerState.ENABLED);
mapView.getMapScene().loadScene(MapStyle.NORMAL_DAY, mapSceneConfig, errorCode -> {
if (errorCode != null) {
Log.d(TAG, "loadScene failed: " + errorCode.toString());
}
});
HERE は mapSceneConfig
、目的のレイヤーTRAFFIC_FLOW
とTRAFFIC_INCIDENTS
その新しい状態を保持します。 新しいマップ シーンをロードする場合 mapSceneConfig
、は、目的のマップスタイルと一緒にパラメータとして渡すことができます。
新しいマップ シーンの設定中に両方のレイヤーを同時に非表示にする場合 LayerState.DISABLED
は、では LayerState.ENABLED
なく、を使用して上記のレイヤーを呼び出すことができます。 または setLayerState()
、上記のようにとの同期コールを使用して、マップ レイヤーの状態を個別に制御できます。
スクリーンショット: マップ上にインシデントとともに表示される交通量。