リクエストを行う際は、可能な限り正確な結果を返す方がよいか、可能な限り早く結果を返すかを判断する必要があります。Routes API には、レスポンス データの品質とレイテンシのレイテンシを制御するオプションがあります。
トラフィック データのレベルを構成する
Routes API には、RoutingPreference(REST)と RoutingPreference(gRPC)が用意されています。これらのルートを使用して、ルートを計算するためのルーティング設定を指定できます。これらの設定では、ルート計算に交通状況が考慮される範囲が異なります。ルーティングの設定ごとに、ルートの品質、推定 ETA、応答レイテンシに関して異なる結果が生成されます。
トラフィック条件は、トラフィック フローの速度を表します。例:
- 渋滞が発生していない場合、交通状況は正常とみなされ、トラフィックは妨げられることなく一定の速度で流れます。
- ラッシュアワーに近づくとトラフィック密度が増加するため、トラフィックが遅くなり、交通状況が中程度から中程度になります。
- バンパーからバンパーへのトラフィックの場合、流量が急激に停止し、渋滞の原因になります。
トラフィックを認識しない
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 でこのオプションを使用すると、リクエスト内の要素の数(出発地の数 × 宛先の数)は 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", ... }