Obtén una matriz de ruta

Usa la API de Routes para calcular la distancia y la duración de una ruta para varios orígenes y destinos llamando al método computeRouteMatrix (REST) o al método de transmisión ComputeRouteMatrix (gRPC).

Dado 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.

Cómo obtener una matriz de rutas de transporte público

También puedes calcular una matriz de rutas en tránsito. Para ver un ejemplo, consulta Cómo obtener una matriz de rutas en transporte público.

Límites de solicitudes

Los métodos de Compute Route Matrix aplican los siguientes límites de solicitudes para los puntos de referencia que usan direcciones o IDs de 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, tienes 100 elementos:

  • La cantidad de elementos no puede superar los 625 para las rutas que no son de TRANSIT.

  • Si especificas una ruta TRANSIT, la cantidad de elementos no puede superar los 100.

  • Si especificas TRAFFIC_AWARE_OPTIMAL, la cantidad de elementos no puede superar los 100. Para obtener más información sobre TRAFFIC_AWARE_OPTIMAL, consulta Especifica cómo incluir datos de tráfico y si es necesario hacerlo.

  • Si especificas orígenes o destinos con una dirección o un ID de lugar, puedes especificar hasta 50 en total de esta manera.

Respuestas de error

Una característica de los métodos de Compute Route Matrix 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, tiene cero orígenes).

Sin embargo, si un error se aplica a un subconjunto de elementos en la respuesta (por ejemplo, no se puede calcular una ruta 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 de gRPC

El método gRPC ComputeRouteMatrix recibe una lista de orígenes y destinos y muestra una transmisión que contiene información de la ruta para cada combinación de origen y destino. Como los resultados se muestran como un flujo, no tienes que esperar a que se calculen todas las combinaciones de rutas posibles para comenzar a procesar los resultados.

No se garantiza que los elementos que devuelve el flujo se muestren en ningún orden. Por lo tanto, cada elemento de respuesta contiene un origin_index y un destination_index. Para los orígenes y destinos especificados por la solicitud, el origen de la ruta equivale a origins[origin_index] para un elemento determinado y el destino de la ruta equivale a destinations[destination_index]. Estos arrays son cero indexados. Es importante almacenar los pedidos de las listas de origen y destino.

Ejemplos de Compute a Route Matrix

Usa el método computeRouteMatrix en una solicitud HTTP para calcular una matriz de rutas.

Ejemplo de HTTP

En el siguiente ejemplo, se muestra una solicitud HTTP computeRouteMatrix. En este ejemplo, harás lo siguiente:

  • Especifica un array de dos puntos de ida 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 tiene un índice de 0, el segundo tiene un índice de 1, y así sucesivamente.

  • Incluye una máscara de campo de respuesta para especificar qué campos de la respuesta (REST) o ComputeRoutesResponse (gRPC) se mostrarán. En este ejemplo, configura la solicitud para que devuelva originIndex, destinationIndex, duration, distanceMeters, status y condition para cada ruta. Para obtener más información, consulta Elige 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 destino y origen.

Identifica cada ruta en la respuesta con 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

Por ejemplo, para las solicitudes de gRPC, consulta los ejemplos en Solicitud de gRPC de ejemplo. El ejemplo de Java en esa página llama a Compute Routes y Compute Route Matrix.