Usa la API de Routes a fin de calcular la distancia y la duración de una ruta para varios orígenes y destinos mediante una llamada al método computeRouteMatrix (REST) o al método de transmisión ComputeRouteMatrix (gRPC).
En una lista de orígenes y destinos, el método calcula la distancia y la duración de una ruta que comienza en cada origen y termina en cada destino.
Límites de solicitudes
Los métodos de la matriz de ruta de Compute aplican los siguientes límites de solicitud:
La cantidad de elementos (cantidad de orígenes × cantidad de destinos) no puede superar los 625.
Si especificas
TRAFFIC_AWARE_OPTIMAL
, la cantidad de elementos no puede superar los 100. Para obtener más información sobreTRAFFIC_AWARE_OPTIMAL
, consulta Cómo configurar la calidad frente a la latencia.La cantidad máxima de puntos de referencia (orígenes + destinos) que puedes especificar con un ID de lugar es 50.
Respuestas de error
Una característica de los métodos de la matriz de ruta de Compute es que se pueden mostrar errores para toda la respuesta o para elementos de respuesta individuales. Por ejemplo, toda la respuesta contiene un error si la solicitud tiene un formato incorrecto (por ejemplo, no tiene ningún origen).
Sin embargo, si un error se aplica a un subconjunto de elementos en la respuesta (por ejemplo, una ruta no se puede calcular para una combinación de origen y destino), solo los elementos afectados por el error muestran un código de error.
Resultados de la transmisión
El método ComputeRouteMatrix de gRPC toma una lista de orígenes y destinos y muestra una transmisión con información de ruta para cada combinación de origen y destino. Debido a que los resultados se muestran como una transmisión, no tienes que esperar hasta que se calculen todas las combinaciones de rutas posibles para comenzar a procesar los resultados.
No se garantiza que los elementos que muestra la transmisión se muestren en ningún orden. Por lo tanto, cada elemento de respuesta contiene un origin_index
y un destination_index
. En el caso de los orígenes y destinos que se especifican en la solicitud, el origen de la ruta equivale a origins[origin_index]
para un elemento determinado y el destino de la ruta, a destinations[destination_index]
.
Estos arreglos no se indexan en cero. Es importante almacenar los pedidos de lista de origen y destino.
Ejemplos de procesamiento de una matriz de ruta
Usa el método computeRouteMatrix en una solicitud HTTP para calcular una matriz de ruta.
Ejemplo de HTTP
En el siguiente ejemplo, se muestra una solicitud HTTP computeRouteMatrix
. En este ejemplo, sucede lo siguiente:
Especifica 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 se encuentra en un índice de 0, el segundo es el índice 1, y así sucesivamente.
Incluye una máscara de campo de respuesta para especificar qué campos de la respuesta (REST) o ComputeRoutesResponse (gRPC) se muestran. En este ejemplo, configura la solicitud para que muestre
originIndex
,destinationIndex
,duration
,distanceMeters
,status
ycondition
en cada ruta. Si quieres obtener más información, consulta Cómo elegir los campos que se mostrarán.
curl -X POST -d '{ "origins": [ { "waypoint": { "location": { "latLng": { "latitude": 37.420761, "longitude": -122.081356 } } }, "routeModifiers": { "avoid_ferries": true} }, { "waypoint": { "location": { "latLng": { "latitude": 37.403184, "longitude": -122.097371 } } }, "routeModifiers": { "avoid_ferries": true} } ], "destinations": [ { "waypoint": { "location": { "latLng": { "latitude": 37.420999, "longitude": -122.086894 } } } }, { "waypoint": { "location": { "latLng": { "latitude": 37.383047, "longitude": -122.044651 } } } } ], "travelMode": "DRIVE", "routingPreference": "TRAFFIC_AWARE" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status,condition' \ 'https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix'
La respuesta contiene las cuatro rutas posibles para la combinación de todos los puntos de referencia de origen y destino.
Identifica cada ruta en la respuesta mediante los campos de respuesta originIndex
y destinationIndex
. Por ejemplo, un originIndex
de 1 en la respuesta corresponde a una ruta calculada a partir del punto de referencia en el índice 1 del array origins
en la solicitud.
[ { "originIndex": 0, "destinationIndex": 0, "status": {}, "distanceMeters": 822, "duration": "160s", "condition": "ROUTE_EXISTS" }, { "originIndex": 1, "destinationIndex": 0, "status": {}, "distanceMeters": 2919, "duration": "361s", "condition": "ROUTE_EXISTS" }, { "originIndex": 1, "destinationIndex": 1, "status": {}, "distanceMeters": 5598, "duration": "402s", "condition": "ROUTE_EXISTS" }, { "originIndex": 0, "destinationIndex": 1, "status": {}, "distanceMeters": 7259, "duration": "712s", "condition": "ROUTE_EXISTS" } ]
Ejemplos de gRPC
Para ver ejemplos de solicitudes de gRPC, consulta los ejemplos en la página sobre el ejemplo de solicitud de gRPC. El ejemplo de Java en esa página llama a las rutas de Compute y a la matriz de rutas de Compute.