リクエストを行う際は、可能な限り正確な結果を返すか、できるだけ早く返すかを決める必要があります。Routes API には、レスポンス データの品質とレスポンスのレイテンシを制御するオプションが用意されています。
トラフィック データのレベルを構成する
Routes API には、ルートを計算する際のルーティング設定を指定する RoutingPreference(REST)と RoutingPreference(gRPC)が用意されています。設定では、ルート計算に交通状況が考慮されます。ルーティング設定ごとに、ルート品質、推定到着予定時刻、応答レイテンシの度合いが異なる結果が生成されます。
交通状況は、トラフィック フローの割合を表します。次に例を示します。
- 混雑がない場合、トラフィックは正常とみなされ、トラフィックは定期的に妨げられずに移動します。
- ピーク時間が近づくと、トラフィック密度が上昇し、トラフィックが減速し、交通状況が少なくなり中程度になります。
- バンパーからバンパーへのトラフィックでは、フローレートが停止して大量のトラフィックが発生します。
トラフィック認識なし
TRAFFIC_UNAWARE
ルーティング設定を設定すると、現在の交通状況を考慮せずにルートが計算されます。このルーティング設定は、レスポンスのレイテンシが最も低くなります(レスポンスが最も高速に返されます)。
TRAFFIC_UNAWARE
がデフォルト設定です。
レスポンス:
ETA は
duration
レスポンス プロパティに含まれています。duration
とstaticDuration
のレスポンス プロパティには同じ値が含まれます。
ルーティングを迅速に取得し、ルーティングの概観で十分である場合は、このルーティング設定を使用します。
トラフィック認識
TRAFFIC_AWARE
ルーティング設定を設定すると、ルートは現在の交通状況を考慮して計算されます。そのため、ルートとルートの詳細がより現実的な条件を反映しています。データ品質の向上によりレスポンス レイテンシが犠牲になるため、パフォーマンスの最適化が適用され、レイテンシが大幅に短縮されます。
レスポンス:
リアルタイムのトラフィックを考慮に入れた到着予定時刻は、
duration
レスポンス プロパティに格納されます。staticDuration
レスポンス プロパティには、交通状況を考慮せずにルートを通過する時間が含まれます。
TRAFFIC_UNAWARE
よりも正確なルーティングの詳細が必要だが、レイテンシが中程度の増加でレスポンスが返されても問題がない場合は、このルーティング設定を使用します。
トラフィック対応(最適)
TRAFFIC_AWARE_OPTIMAL
ルーティング設定を設定すると、ルートは現在の交通状況を考慮して計算されますが、パフォーマンスの最適化は適用されません。このモードでは、サーバーは道路網をより詳細に検索して最適なルートを見つけます。
TRAFFIC_AWARE_OPTIMAL
ルーティング設定は、maps.google.com と Google マップ モバイルアプリで使用されるモードと同じです。
Compute Route Matrix でこのオプションを使用すると、1 つのリクエストに含まれる要素の数(出発地の数 × 目的地の数)が 100 を超えることはできません。Compute Route Matrix の上限の詳細については、ルート マトリックスの計算をご覧ください。
レスポンス:
リアルタイムのトラフィックを考慮に入れた到着予定時刻は、
duration
レスポンス プロパティに格納されます。staticDuration
レスポンス プロパティには、交通状況を考慮せずにルートを通過する時間が含まれます。
このルーティング設定は、レスポンスの最大レイテンシ(つまり、遅延が最も長いレスポンスを返す)を提供します。ルーティングにかかる時間に関係なく高品質の結果を取得する場合は、このルーティング設定を使用します。
出発時刻の設定の影響
必要に応じて、departureTime
プロパティを使用して、ルートの出発時刻を設定できます。departureTime
プロパティを設定しない場合、デフォルトはリクエストを行った時刻になります。
TRAFFIC_UNAWARE
の場合、ルートと所要時間は道路網と平均的な交通状況(時間的な要素を考慮に入れない)に基づいて選択されるため、departureTime
を設定することはできません。リアルタイムの交通状況を考慮する
TRAFFIC_AWARE
とTRAFFIC_AWARE_OPTIMAL
の場合、departureTime
が現在時刻に近いほど、現在の交通状況が重視されます。出発時刻を未来に設定するほど、過去の交通状況も考慮されます。
ルーティング設定の例
次の JSON コードは、リクエスト メッセージ エンティティ本文でルーティング設定を行う方法を示しています。
{ "origin":{ "location":{ "latLng":{ "latitude":37.419734, "longitude":-122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude":37.417670, "longitude":-122.079595 } } }, "travelMode":"DRIVE", "routingPreference":"TRAFFIC_AWARE_OPTIMAL" }
ポリラインの品質を設定する
Routes API では、交通状況を認識するポリラインとともに交通状況などの情報をリクエストできます。詳しくは、ポリラインをリクエストするをご覧ください。
ポリラインの品質は、次のように表現できます。
ポリラインを構成するポイントの数
ポイントが多いほど、ポリラインは滑らかになります(特に曲線)。
点の浮動小数点精度
ポイントは緯度と経度の値として指定します。これらは単精度浮動小数点形式で表現されます。これは小さい値(正確に表現できる)には適していますが、浮動小数点の丸め誤差によって値が増えるにつれて精度は低下します。
computeRoutes メソッド(REST)と ComputeRoutes メソッド(gRPC)は、ポリラインの品質を制御する polylineQuality
リクエスト オプションをサポートしています。
ポリラインの品質を設定する例
polylineQuality
は、ポリラインの品質を HIGH_QUALITY
または OVERVIEW
(デフォルト)で指定します。OVERVIEW
では、ポリラインは少数のポイントを使用して構成され、HIGH_QUALITY
よりもリクエストのレイテンシが低くなります。
たとえば、リクエスト本文は次のようになります。
{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, "travelMode": "DRIVE", "routingPreference": "TRAFFIC_AWARE", "polylineQuality": "HIGH_QUALITY", "polylineEncoding": "ENCODED_POLYLINE", "departureTime": "2023-10-15T15:01:23.045123456Z", ... }