Routes Preferred API の ComputeRouteMatrix
メソッドを使用すると、複数の出発地と目的地間のルートの距離と所要時間を計算できます。ComputeRouteMatrix
は、ストリーミング gRPC 呼び出しと REST HTTP 呼び出しの両方をサポートしています。
ComputeRouteMatrix
は、出発地と目的地のペアのリストを受け取り、各出発地から各目的地に至るルートの距離と所要時間を計算します。ストリームの各要素は、単一のルートの情報に対応します。
ComputeRouteMatrix
メソッドには、距離行列サービスに比べて次のようなメリットがあります。
- ストリーミングにより、行列全体が計算される前に要素を返すことができるため、レイテンシが短縮されます。
ComputeRouteMatrix
には、交通量の計算に関するきめ細かいオプションがあり、品質とレイテンシのトレードオフを決定できます。- リクエストは Google のインフラストラクチャ内で高い優先度で実行されるため、可用性が向上します。
- 経由地の見出し(進行方向)と道路の通行側の情報を指定できます。
- ルートの距離や到着予定時刻とともに、有料道路の情報を返すようリクエストできます。
ComputeRouteMatrix メソッドを有効にする
コードで ComputeRouteMatrix
メソッドを使用する前に、このメソッドを有効にする必要があります。Routes Preferred API メソッドの有効化の詳細については、スタートガイドをご覧ください。
ComputeRouteMatrix メソッドを使用する
ComputeRouteMatrix
メソッドは、Routes Preferred v1 エンドポイントで使用できます。
詳細については、次のドキュメントをご覧ください。
次の一般的な手順では、gRPC を使用して ComputeRouteMatrix
メソッドを呼び出す方法について説明します。
googleapis リポジトリから必要な protobuffer をチェックアウトします。
https://github.com/googleapis/googleapis/tree/master/google/maps/routes
Go などの一部のビルドシステムでは、この処理が自動的に行われる場合があります。
使用する言語とビルドツールのセットを使用して、関連するプロトバッファ コードを生成します。
リクエストを生成します。リクエストとともに、次の 2 つの必須メタデータを送信する必要があります。
- X-Goog-Api-Key は API キーに設定する必要があります。
X-Goog-Fieldmask は、レスポンスで必要なフィールドのカンマ区切りのリストに設定する必要があります。たとえば、X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status です。ワイルドカード文字(*)を使用してすべてのフィールドを指定できますが、これはおすすめしません。ワイルドカード文字を使用して API レスポンスをテストして理解し、本番環境のコードのフィールド マスクで必要なフィールドを明示的にリストします。
フィールド マスク文字列の作成方法の詳細については、https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto をご覧ください。不要なフィールドを無効にすると、それらのフィールドで追加の計算が必要なくなるため、レイテンシを短縮できます。必要なフィールドを指定し、後でより多くの計算を必要とする新しいフィールドを追加すると、レイテンシは安定した状態を維持します。
リクエストを
routespreferred.googleapis.com:443
に送信します。TLS プロトコルを使用する必要があります。
ComputeRouteMatrix
メソッドの使用例については、ルート マトリックスの計算(ベータ版)の例をご覧ください。
ComputeRouteMatrix
メソッドの特徴の 1 つは、ストリーム全体または個々の要素に対してエラーコードを返すことができる点です。たとえば、リクエストの形式が正しくない場合(出発地がゼロの場合など)は、ストリーム接続がエラーを返します。ただし、エラーがストリームのいくつかの要素にのみ適用される場合(出発地に無効なプレイス ID を設定するなど)は、エラーの影響を受ける要素のみにエラーコードが含まれます。
ストリームから返される要素が特定の順序で返される保証はありません。このため、各要素には origin_index
と destination_index
が含まれます。リクエストで指定された出発地と目的地の場合、ルートの出発地は特定の要素の origins[origin_index]
に相当し、ルートの目的地は destinations[destination_index]
に相当します。これらの配列はゼロ インデックスです。出発地と目的地のリスト順序を保持することが重要です。
通行料金の計算
通行料金の計算については、通行料金を計算するをご覧ください。
通行料金の計算例については、ルート マトリックスの計算例をご覧ください。