ガイド変更履歴HERE SDK API references
ガイド

交通情報の使用を開始する

HERE SDKは、ルーティングとナビゲーションのユースケースに対応する、リアルタイムおよび予測交通情報を提供します。

  • TrafficEngineを使用して、交通事案と交通流の情報をクエリします。
  • オンラインのRoutingEngineを使用して、予測交通情報と渋滞要因をRouteオブジェクトの一部として含むルートを算出します。これは、ルートプレビュー中にルート上に交通情報を直接レンダリングする際に使用できます。
  • RoutingEngineでは、更新されたTrafficOnRoute情報をクエリすることもできます。これは、ETAの更新やルートに沿ってレンダリングされた交通状況の更新に使用できます。
  • ナビゲーション中、VisualNavigatorはオプションでTrafficOnRouteをレンダリングできます (Navigateライセンスでのみ利用可能)。
  • マップビューでは、TRAFFIC_FLOWおよびTRAFFIC_INCIDENTSのマップフィーチャーを使用して、交通事案と交通量の情報をリアルタイムで視覚化できます。

ナビゲーション機能は、HERE SDK (Navigate) でのみ使用できます。

リアルタイムおよび予測交通データソースの違い

  • リアルタイム交通データは、リクエスト時点の現在の交通状況を表します。このデータは、実際の道路状況、車両速度、報告された交通事案などの情報に基づいています。MapFeature.TRAFFIC_FLOWを使用した地図の視覚化は、主にリアルタイム交通データに基づいています。
  • 予測交通データは、リアルタイムデータを含む履歴パターンや現在の傾向などの情報に基づいて、将来の交通状況を予測します。RoutingEngineおよび含まれるTrafficOnRouteデータは主に予測交通データに基づいており、これにより、目的地に向かって移動する際の予測されるETAの計算や交通状況の予測をより正確に行うことができます。

主な違いはタイミングです。リアルタイムデータは現在の交通状況を示すのに対し、予測データはルート上のその地点に到達した時点の状況を予測します。このため、次のような差異が生じる場合があります。

  • 現時点で計算されたルートでは、リアルタイムの交通流の地図機能と異なる渋滞要因が表示される場合があります。これは、そのルートが、実際に走行する時点での後続の道路の予測状況も考慮しているためです。
  • TrafficEngineのクエリでは、TRAFFIC_FLOWレイヤーに表示される内容と異なるデータが返される場合があります。これは、リクエストが異なるタイミングで行われる可能性があるためです。
  • ルートベースの交通データ (TrafficOnRouteで更新) は予測モデルを使用するのに対し、交通流の地図機能は現在の状況を表示します。

データソースとAPI

  • 地図上に視覚化されるリアルタイム交通情報は、HERE Traffic Vector Tile APIに基づいています。Traffic Vector Tile APIに基づくトランザクションの例:MapFeatures.TRAFFIC_FLOWMapFeatures.TRAFFIC_INCIDENTSをマップビューにレンダリングします。なお、各フィーチャー リクエストは個別のトランザクションとしてカウントされます。たとえば、ユーザーが交通流と交通事案の両方のデータをリクエストした場合、これは HERE バックエンド システムによって 2 つの別々のトランザクションと見なされます。デフォルトでは、地図のパンおよびズーム中に新しいベクター タイルが読み込まれたとき、またはマップ ビューにベクター タイルが表示されている間にトラフィック バックエンドの設定有効時間が経過したときに、新しいリクエストがトリガーされます。デフォルトの更新期間は、MapContentSettings.setTrafficRefreshPeriod(..)を使用して調整できます。バックエンドの有効時間をオーバーライドして、1~5分の範囲で更新期間を設定できます。ただし、ナビゲーション中などに地図がパン操作されたり、新しいビューポート領域に移動されたりした場合、HERE SDKは新しいリクエストを即座に開始します。
  • ルーティングとナビゲーションで使用される予測交通データは、HERE Traffic API v7に基づいています。HERE Traffic API v7に基づくトランザクションの例:TrafficEngineで交通流データや交通事案をリクエストする、またはRoutingEngineTrafficOnRouteデータをリクエストします。

これらの機能の価格については、「HERE基本プランの価格表」を参照してください。Navigateライセンスを使用している場合、または価格についてご質問がある場合は、お問い合わせください。

次のステップ


EN 日本語

HERE documentation

Find answers to your product and technical questions

Documentation

What's new

Videos

EN 日本語

HERE ドキュメント

製品や技術に関する質問の答えを見つけましょう。より多くの内容と最新の情報については、英語版をご覧ください。

ドキュメント

ダイナミックマップ

動的コンテンツ関連のAPIをアプリやサービスに活用して、ドライバーが安全・快適かつ予定どおりに目的地へ到着できるよう支援します。

地図とデータ

世界中を走行する多数のマッピング車両から得られる最新の位置情報データを活用し、精度の高い地図やカスタムレイヤーを構築できます。

最新情報

動画

(function () { const input = document.querySelector('input[data-typeahead]'); if (!input) return; // Prevent the form from submitting/navigating input.closest('form')?.addEventListener('submit', e => e.preventDefault()); input.addEventListener('input', function () { const q = this.value.trim().toLowerCase(); document.querySelectorAll('.nav-group-name').forEach(group => { let anyVisible = false; group.querySelectorAll('.nav-group-task').forEach(task => { const text = task.textContent.trim().toLowerCase(); const show = !q || text.includes(q); task.style.display = show ? '' : 'none'; if (show) anyVisible = true; }); // Hide the whole group header if nothing matches group.style.display = anyVisible || !q ? '' : 'none'; }); }); })(); (function () { function onTokenClick(event) { var link = event.target.closest('.sdk-for-ios .item .token'); if (!link) return; event.preventDefault(); console.log('token clicked', link.textContent.trim()); var item = link.closest('.item'); if (!item) return; var content = item.querySelector('.height-container'); if (!content) { console.log('no .height-container found for item', item); return; } var isHidden = window.getComputedStyle(content).display === 'none'; content.style.display = isHidden ? 'block' : 'none'; link.classList.toggle('token-open', isHidden); var href = link.getAttribute('href'); if (href) { if (history.pushState) history.pushState({}, '', href); else location.hash = href; } } function openHashTarget() { var hash = window.location.hash.slice(1); if (!hash) return; var anchor = document.querySelector('.sdk-for-ios a[name="' + hash + '"]'); if (!anchor) return; var item = anchor.closest('.item'); if (!item) return; var link = item.querySelector('.token'); var content = item.querySelector('.height-container'); if (!link || !content) return; content.style.display = 'block'; link.classList.add('token-open'); } function init() { console.log('HERE SDK accordion init'); openHashTarget(); } document.removeEventListener('click', onTokenClick); document.addEventListener('click', onTokenClick); if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } window.addEventListener('hashchange', openHashTarget); window.addEventListener('pageLoad', init); })();