Traffic
1 行のコードでマップ レイヤー 状態trafficIncidents
を有効にすることで、マップ上の交通障害を視覚化できます。 HERE SDK は 、レイヤーtrafficFlow
を追加することで現在のトラフィック状況を確認するための別のレイヤーもサポートしています。
また、経路情報 セクションに示されているように、インスタンスRoute
に沿ったトラフィックを指定することもできます。
リアルタイムのトラフィックフローとインシデントをマップに表示
マップ レイヤーの状態trafficIncidents
を有効にすると、マップ上の交通障害を簡単に視覚化できます。 HERE SDK は、現在のトラフィック状況を確認するための別のレイヤーもサポートしています。 マップ上のレイヤーを表示または非表示にする方法については、以下の例を参照してください。
スクリーンショット: マップ上に交通障害を表示。 レイヤーを設定すると、マップの表示領域が自動的に更新されます。 そのため、マップをあらゆる方向に自由に移動して、最新の交通障害を確認できます。
多くの状況で、ドライバーは、都市内外での現在の渋滞状況に基づいて最速ルートを探しています。 HERE SDK を使用すると、現在のすべての渋滞を保持しているレイヤーをさまざまな色の線で表示して、渋滞の重大度をリアルタイムで常に更新することができます。 この機能を使用するには、オンライン接続が必要です。また、より多くのデータを消費します。 ただし、交通渋滞ルートはマップのタイルの一部として表示されるため、高性能です。
これらの交通情報は、いくつかのコード行でマップ上に表示することも、単独で表示することもできます。
do {
try mapView.mapScene.setLayerState(layer: MapLayerLite.trafficFlow, newState: LayerStateLite.enabled)
try mapView.mapScene.setLayerState(layer: MapLayerLite.trafficIncidents, newState: LayerStateLite.enabled)
} catch let mapSceneError {
print("Failed to enable traffic visualization. Cause: \(mapSceneError)")
}
新しいレイヤー状態の設定は同期的に実行されますが、以前にロードしておく必要がある有効なマップ シーンが必要です。 また、新しいマップ シーンの読み込み中に新しいレイヤーの状態を設定すると、エラーが発生することがあります。 レイヤーを非表示にする場合 LayerStateLite.disabled
は、ではなく、で上記のレイヤーを呼び出す LayerStateLite.enabled
ことができます。
トラフィックフローラインは、次のように色分けされています。
- 緑 : 通常 の交通状況
- 黄色 / 黄色 : 渋滞しています
- 赤 : 交通量が非常に多い
- 黒 : トラフィックのブロック
使用例は、トラフィック のアプリの一部として、 GitHub で入手可能。
MapSceneConfig を使用して、複数のレイヤーを新しいマップ シーンで有効にします
を使用してマップ シーンをロードする方が便利な場合 MapSceneConfigLite
があります。 たとえば、トラフィックインシデント、トラフィックフロー、 および新しいマップ シーンの表示を同時に有効にする場合は、次のように呼び出します。
var mapSceneConfig = MapSceneConfigLite()
mapSceneConfig.mapLayers[MapLayerLite.trafficFlow] = LayerStateLite.enabled
mapSceneConfig.mapLayers[MapLayerLite.trafficIncidents] = LayerStateLite.enabled
mapView.mapScene.loadScene(mapStyle: MapStyleLite.normalDay, sceneConfig: mapSceneConfig, callback: self.onLoadScene)
次に、オプションのコールバックを実装して、シーンの読み込みが成功したかどうかを確認します。
func onLoadScene(errorCode: MapSceneLite.ErrorCode?) {
if let error = errorCode {
print("Error: New map scene not loaded: \(error)")
}
}
HERE mapSceneConfig
は、目的のレイヤーと trafficFlow
trafficIncidents
その新しい状態を保持します。 デフォルトでは、両方のレイヤーの初期状態はです disabled
。 新しいマップ シーンをロードする場合 mapSceneConfig
、は、目的のマップスタイルと一緒にパラメータとして渡すことができます。
新しいマップ シーンの設定中に両方のレイヤーを同時に非表示にする場合 .disabled
は、では .enabled
なく、を使用して上記のレイヤーを呼び出すことができます。 または setLayerState(layer:newState:)
、上記のようにとの同期コールを使用して、マップ レイヤーの状態を個別に制御できます。