複数の出発地と目的地を含むルートの距離と所要時間は、Routes Preferred API の ComputeRouteMatrix
メソッドを使用して計算できます。ComputeRouteMatrix
は、ストリーミング gRPC 呼び出しと REST HTTP 呼び出しの両方をサポートしています。
ComputeRouteMatrix
は、出発地と目的地のペアのリストを指定して、各出発地から目的地までのルートの距離と所要時間を計算します。ストリームの各要素は、1 つのルートの情報に対応しています。
ComputeRouteMatrix
メソッドには、距離行列サービスと比べて次のような利点があります。
- ストリーミングにより、行列全体が計算される前に要素を返すことができるため、レイテンシが短縮されます。
ComputeRouteMatrix
には、トラフィック計算用のきめ細かいオプションが用意されており、品質とレイテンシのトレードオフに関する決定を行うことができます。- リクエストは、Google のインフラストラクチャ内でより高い優先度で実行されるため、可用性が高くなります。
- 地点の方向(進行方向)と道のりの情報を指定できます。
- 有料道路の情報(ルート距離と到着予定)を返すようにリクエストできます。
ComputeRouteMatrix メソッドを有効にする
コードで ComputeRouteMatrix
メソッドを使用するには、まず有効にする必要があります。Routes Preferred API メソッドの有効化の詳細については、スタートガイドをご覧ください。
ComputeRouteMatrix メソッドの使用
ComputeRouteMatrix
メソッドは、Routes Preferred v1 エンドポイントで使用できます。
詳細については、次のドキュメントをご覧ください。
次の一般的なステップでは、gRPC を使用して ComputeRouteMatrix
メソッドを呼び出す方法について説明します。
必要なリポジトリで protobuffers を確認します。
https://github.com/googleapis/googleapis/tree/master/google/maps/routes
Go などの一部のビルドシステムでは、この処理が自動的に行われる場合があります。
任意の言語と一連のビルドツールを使用して、適切な protobuffer コードを生成します。
リクエストを生成します。リクエストでは、次の 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
メソッドの大きな特徴として、ストリーム全体または個々の要素についてエラーコードを返すことができる点が挙げられます。たとえば、リクエストの形式が正しくない場合(オリジンがゼロの場合など)、ストリーム接続はエラーを返します。ただし、ストリームの一部の要素のみにエラーが適用される場合(オリジンの無効な場所 ID を設定するなど)、エラーの影響を受ける要素にはエラーコードが含まれます。
ストリームによって返される要素は、必ずしも順序どおりに返されるとは限りません。このため、各要素には origin_index
と destination_index
が含まれます。リクエストで指定された出発地と目的地の場合、ルートの出発地は特定の要素に対し origins[origin_index]
と等しく、ルートの目的地は destinations[destination_index]
と同等です。これらの配列はゼロ インデックス付けされます。出発地と目的地のリストの順序を保存することが重要です。
通行料金の計算
通行料金の計算については、通行料金の計算をご覧ください。
通行料金の計算例については、ルート マトリックスの例の計算をご覧ください。