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
econdition
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:
- Solicite todos os campos usando uma máscara de campo de
['*']
. - Confira a hierarquia dos campos na classe
RouteMatrixItem
dos campos que você quer. 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']