Routes API を使用して、複数の出発地と目的地のルートと距離を計算するために、computeRouteMatrix メソッド(REST)またはストリーミングの ComputeRouteMatrix メソッド(gRPC)を呼び出します。
これらのメソッドは、出発地と目的地のペアのリストを指定して、各出発地から目的地までのルートの距離と所要時間を計算します。
リクエストに関する上限
Compute Route Matrix メソッドでは、次のリクエスト上限が適用されます。
要素の数(出発地の数 x 目的地の数)は 625 を超えることはできません。
TRAFFIC_AWARE_OPTIMAL
を指定する場合、要素の数は 100 を超えることはできません。TRAFFIC_AWARE_OPTIMAL
の詳細については、品質とレイテンシを構成するをご覧ください。場所 ID を使用して指定できる地点(出発地 + 目的地)は最大 50 個です。
レスポンス エラー
Compute Route Matrix メソッドの特徴の一つは、エラーがレスポンス全体または個々のレスポンス要素に対して返されることです。たとえば、リクエストの形式が正しくない場合(オリジンがゼロの場合など)、レスポンス全体にエラーが含まれます。
ただし、レスポンスの要素のサブセットにエラーが適用される場合(たとえば、出発地と目的地の組み合わせでルートを計算できない場合)、エラーの影響を受ける要素のみがエラーコードを返します。
結果をストリーミング
ComputeRouteMatrix gRPC メソッドは、出発地と目的地のリストを受け取り、出発地と目的地の組み合わせごとのルート情報を含むストリームを返します。結果がストリームとして返されるため、可能性のあるルートの組み合わせがすべて計算されるまで待ってから、結果の処理を開始できます。
ストリームによって返される要素は、必ずしも順序どおりに返されるとは限りません。したがって、各レスポンス要素には origin_index
と destination_index
が含まれます。リクエストで指定された出発地と目的地の場合、ルートの出発地は特定の要素と origins[origin_index]
に等しく、ルートの目的地は destinations[destination_index]
と同等です。これらの配列はゼロ インデックス付けされます。出発地と目的地のリストの順序を保存することが重要です。
ルート マトリックスの計算
HTTP リクエストで computeRouteMatrix メソッドを使用して、ルート マトリックスを計算します。
HTTP の例
次の例は、computeRouteMatrix
HTTP リクエストを示しています。この例では、次のことを行います。
出発地と目的地の 2 つの地点の配列を指定します。このメソッドでは、各出発地から各目的地へのルートが計算され、レスポンスに 4 つのルートが含まれます。
配列では、最初の要素はインデックス 0 にあり、2 番目の要素はインデックス 1 というようになっています。
レスポンス フィールド マスクを追加して、レスポンス(REST)または ComputeRoutesResponse(gRPC)のどのフィールドを返すかを指定します。この例では、ルートごとに
originIndex
、destinationIndex
、duration
、distanceMeters
、status
、condition
を返すようにリクエストを構成します。詳しくは、返すフィールドを選択するをご覧ください。
curl -X POST -d '{ "origins": [ { "waypoint": { "location": { "latLng": { "latitude": 37.420761, "longitude": -122.081356 } } }, "routeModifiers": { "avoid_ferries": true} }, { "waypoint": { "location": { "latLng": { "latitude": 37.403184, "longitude": -122.097371 } } }, "routeModifiers": { "avoid_ferries": true} } ], "destinations": [ { "waypoint": { "location": { "latLng": { "latitude": 37.420999, "longitude": -122.086894 } } } }, { "waypoint": { "location": { "latLng": { "latitude": 37.383047, "longitude": -122.044651 } } } } ], "travelMode": "DRIVE", "routingPreference": "TRAFFIC_AWARE" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status,condition' \ 'https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix'
レスポンスには、出発地と目的地のすべての地点の組み合わせに対して可能な 4 つのルートが含まれます。
originIndex
と destinationIndex
のレスポンス フィールドを使用して、レスポンス内の各ルートを識別します。たとえば、レスポンスの originIndex
が 1 であれば、リクエスト内の origins
配列のインデックス 1 の地点から計算されたルートに対応します。
[ { "originIndex": 0, "destinationIndex": 0, "status": {}, "distanceMeters": 822, "duration": "160s", "condition": "ROUTE_EXISTS" }, { "originIndex": 1, "destinationIndex": 0, "status": {}, "distanceMeters": 2919, "duration": "361s", "condition": "ROUTE_EXISTS" }, { "originIndex": 1, "destinationIndex": 1, "status": {}, "distanceMeters": 5598, "duration": "402s", "condition": "ROUTE_EXISTS" }, { "originIndex": 0, "destinationIndex": 1, "status": {}, "distanceMeters": 7259, "duration": "712s", "condition": "ROUTE_EXISTS" } ]
gRPC の例
gRPC リクエストの例については、gRPC リクエストの例の例をご覧ください。このページの Java の例は、Compute Route と Compute Route Matrix の両方を呼び出します。