Una matriz de rutas es un array bidimensional de información de rutas, en el que las filas corresponden a los orígenes y las columnas a los destinos. Dada una lista de orígenes y destinos, la clase Route Matrix calcula la distancia y la duración de una ruta que comienza en cada origen y termina en cada destino. Usa la clase Route Matrix para calcular la distancia y la duración de una ruta para varios orígenes y destinos.
Límites de solicitudes
El método RouteMatrix.computeRouteMatrix()
aplica los siguientes límites de solicitudes para los puntos de referencia que usan instancias de direcciones o lugares, y para los elementos. Los elementos son las rutas entre cada origen y destino en una matriz de rutas, por lo que la cantidad de elementos es la cantidad de orígenes multiplicada por la cantidad de destinos. Por ejemplo, si tienes 10 orígenes y 10 destinos, tendrás 100 elementos:
- La cantidad de elementos no puede superar los 625 para las rutas que no son de
TRANSIT
. - Si especificas una ruta de
TRANSIT
, la cantidad de elementos no puede superar los 100. - Si especificas
TRAFFIC_AWARE_OPTIMAL
, la cantidad de elementos no puede superar los 100. - Si especificas orígenes o destinos con direcciones o instancias de Place, puedes especificar hasta 50 en total de esta manera.
Ejemplo de solicitud de matriz de rutas
En el siguiente ejemplo, se muestra un ComputeRouteMatrixRequest
. En este ejemplo, se realizan las siguientes acciones:
- Se muestra cómo especificar un array de dos puntos de referencia de origen y dos de destino. El método calcula una ruta desde cada origen hasta cada destino, por lo que la respuesta contiene cuatro rutas.
En el array, el primer elemento está en el índice 0, el segundo en el índice 1, y así sucesivamente. - Especifica los campos que se devolverán. En este ejemplo, configura la solicitud para que devuelva
durationMillis
,distanceMeters
ycondition
para cada ruta.
const request = { origins: [origin1, origin2], destinations: [destinationA, destinationB], travelMode: google.maps.TravelMode.DRIVING, units: google.maps.UnitSystem.METRIC, fields: ['durationMillis', 'distanceMeters', 'condition'], };
La respuesta contiene las cuatro rutas posibles para la combinación de todos los puntos de partida y de destino, como se muestra en el siguiente ejemplo:
"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 } ] } ] }
Identifica cada ruta en el resultado usando el índice de origen y destino para encontrar el RouteMatrixItem
correspondiente en el array bidimensional. Por ejemplo, el objeto RouteMatrixItem
que describe la ruta calculada desde el origen en el índice 1 y el destino 0 en la solicitud estaría en el 2º elemento del array RouteMatrix.rows
y el 1º elemento del array RouteMatrixRow.items
.
En el siguiente fragmento de código, se muestra cómo identificar el RouteMatrixItem
para encontrar la ruta de un origen y un 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];
Elige los campos que se devolverán
Cuando solicitas una matriz de rutas, debes usar una máscara de campo para especificar qué información debe devolver la respuesta.
Usar una máscara de campo también garantiza que no solicites datos innecesarios, lo que, a su vez, ayuda a reducir la latencia de respuesta y evita que se devuelva información que tu sistema no necesita.
Especifica la lista de campos que necesitas configurando la propiedad
ComputeRoutesMatrixRequest.fields
, como se muestra en el siguiente fragmento:
fields: ['durationMillis', 'distanceMeters', 'condition'],
Determina qué máscaras de campo usar
A continuación, se explica cómo determinar qué campos deseas usar y cómo construir las máscaras de campo para ellos:
- Solicita todos los campos con una máscara de campo de
['*']
. - Consulta la jerarquía de los campos en la clase
RouteMatrixItem
para los campos que desees. Construye tus máscaras de campo con la jerarquía de los campos que se muestran en el paso anterior, con este formato:
topLevelField[.secondLevelField][.thirdLevelField][...]
Por ejemplo, para este RouteMatrixItem
:
"travelAdvisory": { "fuelConsumptionMicroliters": 0, "tollInfo": { "estimatedPrices": [ { "currencyCode": "USD", "units": 4, "nanos": 400000000 } ] } },
Si solo deseas devolver el campo tollInfo
para el RouteMatrixItem
,
tu máscara de campo será la siguiente:
fields: ['travelAdvisory.tollInfo']
Si, en cambio, deseas solicitar el consumo de combustible estimado, tu máscara de campo será la siguiente:
fields: ['travelAdvisory.fuelConsumptionMicroliters']
Si quieres solicitar ambos, tu máscara de campo será la siguiente:
fields: ['travelAdvisory.fuelConsumptionMicroliters', 'travelAdvisory.tollInfo']
Y si deseas solicitar el conjunto completo de avisos de viaje, tu máscara de campo se verá de la siguiente manera:
fields: ['travelAdvisory']