ルート マトリックスを取得する

Routes API を使用して、computeRouteMatrix メソッド(REST)またはストリーミング ComputeRouteMatrix メソッド(gRPC)を呼び出して、複数の送信元と宛先のルートの距離と所要時間を計算します。

このメソッドでは、出発地と目的地のリストが与えられると、各出発地から目的地までのルートの距離と所要時間が計算されます。

交通機関のルート マトリックスを取得する

交通機関でルート マトリックスを計算することもできます。例については、交通機関のルート マトリックスを取得するをご覧ください。

リクエストに関する上限

Compute Route Matrix メソッドでは、住所または placeID を使用するウェイポイント、および要素に対して、次のリクエスト上限が適用されます。要素はルート マトリックス内の各出発地と目的地の間のルートであるため、要素の数は出発地の数に目的地の数を掛けた値です。たとえば、出発地が 10 個、目的地が 10 個ある場合、100 個の要素があります。

  • TRANSIT ルート以外のルートの場合、要素の数は 625 以下にする必要があります。

  • TRANSIT ルートを指定する場合、要素の数は 100 以下にする必要があります。

  • TRAFFIC_AWARE_OPTIMAL を指定する場合、要素の数は 100 を超えることはできません。TRAFFIC_AWARE_OPTIMAL の詳細については、トラフィック データを含めるかどうかを指定するをご覧ください。

  • 住所またはプレイス ID を使用して出発地または目的地を指定する場合は、この方法で最大 50 件まで指定できます。

レスポンス エラー

Compute Route Matrix メソッドの特長の 1 つは、レスポンス全体または個々のレスポンス要素に対してエラーが返される可能性があることです。たとえば、リクエストの形式が正しくない場合(オリジンがゼロなど)、レスポンス全体にエラーが含まれます。

ただし、レスポンスの要素のサブセットにエラーが適用される場合(たとえば、出発地と目的地の 1 つの組み合わせでルートを計算できない)は、エラーの影響を受ける要素のみがエラーコードを返します。

gRPC ストリームの結果

ComputeRouteMatrix gRPC メソッドは、送信元と宛先のリストを受け取り、送信元と宛先の各組み合わせのルート情報を含むストリームを返します。結果はストリームとして返されるため、結果の処理を開始する前に、考えられるすべてのルートの組み合わせが計算されるまで待つ必要はありません。

ストリームによって返される要素は、どのような順序でも返されるとは限りません。そのため、各レスポンス要素には origin_indexdestination_index が含まれます。リクエストで指定された出発地と目的地の場合、ルートの出発地は特定の要素の origins[origin_index] と等しく、ルートの目的地は destinations[destination_index] と等しくなります。これらの配列にはゼロのインデックスが付加されます。出発地と目的地のリストの順序を保存することが重要です。

ルート マトリックスの計算例

HTTP リクエストで computeRouteMatrix メソッドを使用して、ルート マトリックスを計算します。

HTTP の例

次の例は、computeRouteMatrix HTTP リクエストを示しています。この例では、次のことを行います。

  • 2 つの出発地と 2 つの目的地の地点の配列を指定します。このメソッドでは各送信元から各宛先へのルートが計算され、レスポンスには 4 つのルートが含まれます。

    配列では、最初の要素のインデックスは 0、2 番目の要素はインデックス 1 というように続きます。

  • レスポンス(REST)または ComputeRoutesResponse(gRPC)のどのフィールドを返すかを指定するレスポンス フィールド マスクを含めます。この例では、ルートごとに originIndexdestinationIndexdurationdistanceMetersstatuscondition を返すようにリクエストを構成します。詳細については、返されるフィールドを選択するをご覧ください。

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 つのルートが含まれます。

originIndexdestinationIndex のレスポンス フィールドを使用して、レスポンスの各ルートを特定します。たとえば、レスポンスの 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 の両方を呼び出しています。