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

ルート マトリックスは、ルート情報の 2 次元配列です。行は出発地に対応し、列は目的地に対応します。ルート マトリックス クラスは、出発地と目的地のリストを受け取り、各出発地から各目的地に至るルートの距離と所要時間を計算します。Route Matrix クラスを使用して、複数の出発地と目的地についてルートの距離と所要時間を計算します。

リクエストに関する上限

RouteMatrix.computeRouteMatrix() メソッドでは、住所または Place インスタンスを使用するウェイポイントとアイテムに対して、以下のリクエスト制限が適用されます。アイテムは、ルート マトリックス内の各出発地と目的地間のルートであるため、アイテム数は出発地の数×目的地の数になります。たとえば、出発地が 10 個、目的地が 10 個ある場合、アイテムは 100 個になります。

  • アイテムの数は、TRANSIT ルート以外のルートの場合、625 個以下にする必要があります。
  • TRANSIT ルートを指定する場合、アイテム数は 100 個以下にする必要があります。
  • TRAFFIC_AWARE_OPTIMAL を指定した場合、アイテム数は 100 個以下にする必要があります。
  • 住所または Place インスタンスで出発地または目的地を指定する場合、合計 50 件まで指定できます。

ルート マトリックス リクエストの例

次の例は、ComputeRouteMatrixRequest を示しています。この例では、次の操作を行います。

  • 出発地と目的地の 2 つの経由地を指定する様子を示しています。このメソッドは、各出発地から各目的地までのルートを計算するため、レスポンスには 4 つのルートが含まれます。
    配列では、最初の要素はインデックス 0、2 番目の要素はインデックス 1 です。以降も同様です。
  • 返すフィールドを指定します。この例では、各ルートの durationMillisdistanceMeterscondition を返すようにリクエストを構成します。
const request = {
  origins: [origin1, origin2],
  destinations: [destinationA, destinationB],
  travelMode: google.maps.TravelMode.DRIVING,
  units: google.maps.UnitSystem.METRIC,
  fields: ['durationMillis', 'distanceMeters', 'condition'], 
};
    

レスポンスには、次の例に示すように、すべての出発地と目的地のウェイポイントの組み合わせによる 4 つのルートが含まれます。

"matrix": {
  "rows": [
    {
      "items": [
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 202587,
          "durationMillis": 10040000
        },
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 252734,
          "durationMillis": 12240000
        }
      ]
    },
    {
      "items": [
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 166135,
          "durationMillis": 6596000
        },
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 216282,
          "durationMillis": 8797000
        }
      ]
    }
  ]
}
    

結果の各ルートを識別するには、出発地と目的地のインデックスを使用して、2 次元配列内の対応する RouteMatrixItem を見つけます。たとえば、リクエストのインデックス 1 の出発地とインデックス 0 の目的地から計算されたルートを記述する RouteMatrixItem は、RouteMatrix.rows 配列の 2 番目の要素と RouteMatrixRow.items 配列の 1 番目の要素にあります。

次のコード スニペットは、特定の出発地と目的地のルートを見つけるために RouteMatrixItem を特定する方法を示しています。

// Find the route for origin 'x' and destination 'y'.
const {matrix} = await RouteMatrix.computeRouteMatrix(request);
const myRouteMatrixItem = matrix.rows[x].items[y];
    

返すフィールドを選択する

ルート マトリックスをリクエストする場合は、フィールド マスクを使用して、レスポンスで返す情報を指定する必要があります。

フィールド マスクを使用すると、不要なデータをリクエストしないようにすることもできます。これにより、レスポンス レイテンシが短縮され、システムで不要な情報が返されるのを防ぐことができます。

次のスニペットに示すように、 ComputeRoutesMatrixRequest.fields プロパティを設定して、必要なフィールドのリストを指定します。

fields: ['durationMillis', 'distanceMeters', 'condition'],
    

使用するフィールド マスクを決定する

使用するフィールドを特定し、それらのフィールドのフィールド マスクを作成する方法は次のとおりです。

  1. フィールド マスク ['*'] を使用してすべてのフィールドをリクエストします。
  2. 必要なフィールドの RouteMatrixItem クラスでフィールドの階層を確認します
  3. 前の手順で示したフィールドの階層を使用して、次の形式でフィールド マスクを構築します。

    topLevelField[.secondLevelField][.thirdLevelField][...]

たとえば、次の RouteMatrixItem の場合:

  "travelAdvisory": {
    "fuelConsumptionMicroliters": 0,
    "tollInfo": {
      "estimatedPrices": [
        {
          "currencyCode": "USD",
          "units": 4,
          "nanos": 400000000
        }
      ]
    }
  },
    

RouteMatrixItemtollInfo フィールドのみを返す場合は、フィールド マスクは次のようになります。

fields: ['travelAdvisory.tollInfo']

代わりに推定燃料消費量をリクエストする場合は、フィールド マスクは次のようになります。

fields: ['travelAdvisory.fuelConsumptionMicroliters']

両方をリクエストする場合は、フィールド マスクは次のようになります。

fields: ['travelAdvisory.fuelConsumptionMicroliters', 'travelAdvisory.tollInfo']

旅行に関する注意情報の完全なセットをリクエストする場合は、フィールド マスクは次のようになります。

fields: ['travelAdvisory']