交通設定では、ルートの詳細の精度とリクエストのパフォーマンスのバランスを取ります。リクエストを行うときに、可能な限り最も正確な結果を返すべきか、それとも結果を迅速に返す方がよいかを判断する必要があります。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", ... }