Acessar matriz de rota

Desenvolvedores do Espaço Econômico Europeu (EEE)

Uma matriz de rotas é uma matriz bidimensional de informações de rotas, em que as linhas correspondem às origens e as colunas aos destinos. Com uma lista de origens e destinos, a classe Route Matrix calcula a distância e a duração de um trajeto que começa em cada origem e termina em cada destino. Use a classe Route Matrix para calcular a distância e a duração de um trajeto para várias origens e destinos.

Limites de solicitações

O método RouteMatrix.computeRouteMatrix() impõe os seguintes limites de solicitação para pontos de referência usando instâncias de endereço ou lugar e para itens. Os itens são os trajetos entre cada origem e destino em uma matriz de rotas. Portanto, o número de itens é o número de origens multiplicado pelo número de destinos. Por exemplo, se você tiver 10 origens e 10 destinos, terá 100 itens:

  • O número de itens não pode exceder 625 para rotas que não são TRANSIT.
  • Se você especificar uma TRANSIT rota, o número de itens não poderá exceder 100.
  • Se você especificar TRAFFIC_AWARE_OPTIMAL, o número de itens não poderá exceder 100.
  • Se você especificar origens ou destinos usando endereços ou instâncias de lugar, poderá especificar até 50 no total dessa forma.

Exemplo de solicitação de matriz de rotas

O exemplo a seguir mostra um ComputeRouteMatrixRequest. Este exemplo faz o seguinte:

  • Mostra como especificar uma matriz de dois pontos de referência de origem e dois de destino. O método calcula um trajeto de cada origem para cada destino. Portanto, a resposta contém quatro trajetos.
    Na matriz, o primeiro elemento está no índice 0, o segundo no índice 1 e assim por diante.
  • Especifique os campos que serão retornados. Neste exemplo, configure a solicitação para retornar durationMillis, distanceMeters e condition para cada rota.

TypeScript

const request = {
  origins: [origin1, origin2], 
  destinations: [destinationA, destinationB],
  travelMode: 'DRIVING',
  units: google.maps.UnitSystem.METRIC,
  fields: ['distanceMeters', 'durationMillis', 'condition'],
};

JavaScript

const request = {
    origins: [origin1, origin2],
    destinations: [destinationA, destinationB],
    travelMode: 'DRIVING',
    units: google.maps.UnitSystem.METRIC,
    fields: ['distanceMeters', 'durationMillis', 'condition'],
};

A resposta contém as quatro rotas possíveis para a combinação de todos os pontos de partida e de destino, conforme mostrado no exemplo a seguir:

"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
        }
      ]
    }
  ]
}
    

Identifique cada trajeto no resultado usando o índice de origem e destino para encontrar o RouteMatrixItem correspondente na matriz bidimensional. Por exemplo, o RouteMatrixItem que descreve o trajeto calculado da origem no índice 1 e o destino 0 na solicitação estaria no segundo elemento da matriz RouteMatrix.rows e no primeiro elemento da matriz RouteMatrixRow.items.

O snippet de código a seguir mostra como identificar o RouteMatrixItem para encontrar a rota de uma origem e um destino específicos:

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

Escolher os campos que serão retornados

Ao solicitar uma matriz de rotas, você precisa usar uma máscara de campo para especificar quais informações a resposta deve retornar.

O uso de uma máscara de campo também garante que você não solicite dados desnecessários, o que ajuda na latência de resposta e evita o retorno de informações que seu sistema não precisa.

Especifique a lista de campos necessários definindo a propriedade ComputeRoutesMatrixRequest.fields, conforme mostrado no snippet a seguir:

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

Determinar quais máscaras de campo usar

Veja como determinar quais campos você quer usar e construir as máscaras de campo para eles:

  1. Solicite todos os campos usando uma máscara de campo de ['*'].
  2. Confira a hierarquia dos campos na classe RouteMatrixItem dos campos que você quer.
  3. Crie suas máscaras de campo usando a hierarquia dos campos mostrados na etapa anterior, neste formato:

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

Por exemplo, para este RouteMatrixItem:

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

Se você quiser retornar apenas o campo tollInfo para o RouteMatrixItem, sua máscara de campo será a seguinte:

fields: ['travelAdvisory.tollInfo']

Se você quiser solicitar o consumo estimado de combustível, a máscara de campo será a seguinte:

fields: ['travelAdvisory.fuelConsumptionMicroliters']

Se você quiser solicitar os dois, a máscara de campo será a seguinte:

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

Se quiser solicitar o conjunto completo de alertas de viagem, sua máscara de campo será a seguinte:

fields: ['travelAdvisory']