交通設定を選択すると、ルートの詳細の精度とリクエストのパフォーマンスのバランスが取れます。リクエストを行う際は、できる限り正確な結果を返すか、できるだけ早く結果を返すか、どちらがよいかを判断する必要があります。Routes API には、レスポンス データの品質とレスポンスのレイテンシを制御できるオプションが用意されています。
トラフィック データのレベルを設定する
Routes API には、ルート計算のルーティング設定を指定するための RoutingPreference(REST)と RoutingPreference(gRPC)が用意されています。こうした設定の違いは、ルートの計算でトラフィック状態を考慮する点です。それぞれのルーティング設定により、ルートの品質、推定 ETA、レスポンス レイテンシに関して異なる結果が生成されます。
交通状況は交通の流れの特性を表します。例:
- 輻輳がない場合、交通状況は正常とみなされ、正常な速度で流れます。
- ピーク時間が近づくと交通密度が上がり、交通量は減り、交通量は軽度から中程度になります。
- バンパーからバンパーへの交通量では、流量が停止して交通量が増加します。
認識されていないトラフィック
TRAFFIC_UNAWARE
ルーティング設定を設定すると、現在の交通状況を考慮せずにルートが計算されます。このルーティング設定は、レスポンスのレイテンシが最も低くなります(レスポンスが最も速く返されます)。
TRAFFIC_UNAWARE
がデフォルト設定です。
返答に以下を含めます。
ETA は
duration
レスポンス プロパティに含まれています。duration
とstaticDuration
のレスポンス プロパティは同じ値を含みます。
このルーティング設定は、レスポンスをできるだけ早く返したいときに、おおよそのルーティングの詳細で十分である場合に使用します。
トラフィック アウェア
TRAFFIC_AWARE
ルーティング設定を設定すると、現在の交通状況を考慮してルートが計算されます。その結果、ルートとルートの詳細は、実際の状況をより正確に反映しています。このデータ品質の向上によってレスポンスのレイテンシが犠牲になるため、パフォーマンスの最適化が適用され、レイテンシが大幅に削減されます。
返答に以下を含めます。
リアルタイムの交通状況を考慮した ETA は、
duration
レスポンス プロパティに含まれています。staticDuration
レスポンス プロパティには、交通状況を考慮しないルートの移動時間が含まれます。
このルーティング設定は、TRAFFIC_UNAWARE
よりも正確なルーティングの詳細が必要で、レスポンスが返されるときにレイテンシがやや長くてもかまわない場合に使用します。
トラフィック アウェア オプティブ
TRAFFIC_AWARE_OPTIMAL
ルーティング設定を設定すると、現在の交通状況を考慮してルートが計算されますが、パフォーマンスの最適化は適用されません。このモードでは、サーバーは道路網のより包括的な検索を実行して、最適なルートを見つけます。
TRAFFIC_AWARE_OPTIMAL
ルーティング設定は、maps.google.com や Google マップ モバイルアプリで使用されるモードと同じです。
このオプションを Compute Route Matrix で使用する場合、リクエストの要素数(出発地の数 × 目的地の数)は 100 を超えることはできません。Compute Route Matrix の上限については、ルート マトリックスの計算をご覧ください。
返答に以下を含めます。
リアルタイムの交通状況を考慮した ETA は、
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", ... }