Routes API を使用して、computeRouteMatrix メソッド(REST)またはストリーミング ComputeRouteMatrix メソッド(gRPC)を呼び出すことで、複数の出発地と目的地間のルートの距離と所要時間を計算します。
このメソッドは、出発地と目的地のリストを受け取り、各出発地から各目的地に至るルートの距離と所要時間を返します。
公共交通機関のルート マトリックスを取得する
公共交通機関のルート マトリックスを計算することもできます。例については、公共交通機関のルート マトリックスを取得するを参照してください。
リクエスト制限
Compute Route Matrix メソッドでは、住所または場所 ID を使用するウェイポイントと要素に対して、以下のリクエスト制限が適用されます。要素は、ルート マトリックス内の各出発地と目的地間のルートであるため、要素数は出発地の数×目的地の数になります。たとえば、出発地が 10 個、目的地が 10 個ある場合、要素は 100 個になります。
TRANSIT
ルート以外のルートでは、要素数を 625 個以下にする必要があります。TRANSIT
ルートを指定する場合、要素数は 100 個以下にする必要があります。TRAFFIC_AWARE_OPTIMAL
を指定した場合、要素数は 100 個以下にする必要があります。TRAFFIC_AWARE_OPTIMAL
の詳細については、交通データを含める方法と含めるかどうかを指定するを参照してください。住所またはプレイス ID で出発地または目的地を指定する場合、合計 50 件まで指定できます。
レスポンス エラー
Compute Route Matrix メソッドの特徴の 1 つは、レスポンス全体または個々のレスポンス要素に対してエラーを返すことができる点です。たとえば、リクエストの形式が正しくない場合(出発地がゼロの場合など)は、レスポンス全体にエラーが含まれます。
ただし、エラーがレスポンス内の要素のサブセットに適用される場合(出発地と目的地の組み合わせでルートを計算できない場合など)は、エラーの影響を受ける要素のみがエラーコードを返します。
gRPC ストリーム結果
ComputeRouteMatrix gRPC メソッドは、出発地と目的地のリストを受け取り、出発地と目的地の各組み合わせについてルート情報を含むストリームを返します。結果はストリームとして返されるため、すべてのルート組み合わせの計算完了を待たずに、結果の処理を開始できます。
ストリームから返される要素が特定の順序で返される保証はありません。したがって、各レスポンス要素には origin_index
と destination_index
が含まれます。リクエストで指定された出発地と目的地の場合、ルートの出発地は特定の要素の origins[origin_index]
に相当し、ルートの目的地は destinations[destination_index]
に相当します。これらの配列はゼロ インデックスです。出発地と目的地のリスト順序を保持することが重要です。
ルート マトリックスの計算例
HTTP リクエストで computeRouteMatrix メソッドを使用してルート マトリックスを計算します。
HTTP の例
次の例は、computeRouteMatrix
HTTP リクエストを示しています。この例では、次の操作を行います。
2 つの出発地と 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 Routes と Compute Route Matrix の両方が呼び出されます。