Obtén una matriz de ruta

Usa la API de Routes a fin de 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 ComputeRouteMatrix de transmisión (gRPC).

A partir de 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 finaliza en cada destino.

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

También puedes calcular una matriz de rutas en transporte público. Para ver un ejemplo, consulta Obtén 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 solicitud para puntos de referencia que usan direcciones o IDs de lugar, y para elementos. Los elementos son las rutas entre cada origen y destino en una matriz de ruta, por lo que la cantidad de elementos es la cantidad de orígenes 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 ser superior a 625 para rutas que no son TRANSIT.

  • Si especificas una ruta TRANSIT, la cantidad de elementos no puede ser superior a 100.

  • Si especificas TRAFFIC_AWARE_OPTIMAL, la cantidad de elementos no puede ser superior a 100. Para obtener más información sobre TRAFFIC_AWARE_OPTIMAL, consulta Especifica cómo y si quieres incluir datos de tráfico.

  • Si especificas los orígenes o destinos con la dirección o el ID de lugar, especifica 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 contendrá un error si la solicitud tiene un formato incorrecto (por ejemplo, no tiene orígenes).

Sin embargo, si un error se aplica a un subconjunto de elementos de 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 mostrarán un código de error.

Resultados de la transmisión de gRPC

El método de gRPC de ComputeRouteMatrix toma una lista de orígenes y destinos, y muestra una transmisión que contiene información de ruta para cada combinación de origen y destino. Debido a que los resultados se muestran como un flujo, no es necesario que esperes hasta que se calculen todas las combinaciones de rutas posibles para poder 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 especificados en la solicitud, el origen de la ruta es equivalente a origins[origin_index] para un elemento determinado y el destino de la ruta es equivalente a destinations[destination_index]. Estos arrays tienen índice cero. Es importante almacenar los pedidos de la lista de origen y destino.

Ejemplos de cálculo 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, haces 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, de modo que la respuesta contenga cuatro rutas.

    En el array, el primer elemento es un índice de 0, el segundo es un í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 mostrarán. En este ejemplo, configura la solicitud para que muestre 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 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 desde el 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 solicitudes de gRPC, consulta los ejemplos en Ejemplo de solicitud de gRPC. En el ejemplo de Java de esa página, se llama a Compute Routes y Compute Route Matrix.