ルート マトリックスは、ルート情報の 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 です。以降も同様です。 - 返すフィールドを指定します。この例では、各ルートの
durationMillis
、distanceMeters
、condition
を返すようにリクエストを構成します。
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'],
使用するフィールド マスクを決定する
使用するフィールドを特定し、それらのフィールドのフィールド マスクを作成する方法は次のとおりです。
- フィールド マスク
['*']
を使用してすべてのフィールドをリクエストします。 - 必要なフィールドの
RouteMatrixItem
クラスでフィールドの階層を確認します。 前の手順で示したフィールドの階層を使用して、次の形式でフィールド マスクを構築します。
topLevelField[.secondLevelField][.thirdLevelField][...]
たとえば、次の RouteMatrixItem
の場合:
"travelAdvisory": { "fuelConsumptionMicroliters": 0, "tollInfo": { "estimatedPrices": [ { "currencyCode": "USD", "units": 4, "nanos": 400000000 } ] } },
RouteMatrixItem
の tollInfo
フィールドのみを返す場合は、フィールド マスクは次のようになります。
fields: ['travelAdvisory.tollInfo']
代わりに推定燃料消費量をリクエストする場合は、フィールド マスクは次のようになります。
fields: ['travelAdvisory.fuelConsumptionMicroliters']
両方をリクエストする場合は、フィールド マスクは次のようになります。
fields: ['travelAdvisory.fuelConsumptionMicroliters', 'travelAdvisory.tollInfo']
旅行に関する注意情報の完全なセットをリクエストする場合は、フィールド マスクは次のようになります。
fields: ['travelAdvisory']