Calcula una matriz de ruta

Puedes calcular la distancia y la duración de una ruta para varios orígenes y destinos con el método ComputeRouteMatrix de la API de Routes Preferred. ComputeRouteMatrix admite la transmisión de llamadas de gRPC y las llamadas HTTP de REST.

En una lista de pares de origen y destino, ComputeRouteMatrix calcula la distancia y la duración de una ruta que comienza en cada origen y finaliza en cada destino. Cada elemento del flujo corresponde a la información de una sola ruta.

El método ComputeRouteMatrix tiene varias ventajas sobre el servicio Distance Matrix:

  • La transmisión permite mostrar los elementos antes de que se haya calculado toda la matriz, lo que disminuye la latencia.
  • ComputeRouteMatrix tiene opciones detalladas para el cálculo del tráfico, lo que te permite tomar decisiones de compensación entre calidad y latencia.
  • Las solicitudes se ejecutan con una prioridad más alta dentro de la infraestructura de Google, lo que genera una mayor disponibilidad.
  • Puedes especificar la información de orientación (dirección del viaje) y de carretera para los puntos de referencia.
  • Puedes solicitar que se muestre información sobre los peajes, junto con la distancia de la ruta y la hora de llegada estimada.

Habilita el método ComputeRouteMatrix

Antes de poder usar el método ComputeRouteMatrix en tu código, debes habilitarlo. Para obtener más información sobre cómo habilitar los métodos de la API de Routes Preferred, consulta Cómo comenzar.

Usa el método ComputeRouteMatrix

El método ComputeRouteMatrix está disponible a través del extremo v1 de Routes Preferred.

Consulta la siguiente documentación para obtener información más detallada:

gRPC: https://developers.google.com/maps/documentation/routes_preferred/reference/rpc/google.maps.routes.v1

REST: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/v1/TopLevel/computeRouteMatrix

En los siguientes pasos genéricos, se describe cómo usar gRPC para llamar al método ComputeRouteMatrix:

  1. Consulta los protobufs necesarios del repositorio de googleapis:

    https://github.com/googleapis/googleapis/tree/master/google/maps/routes

    Ten en cuenta que algunos sistemas de compilación, como Go, pueden hacerlo automáticamente.

  2. Usa tu lenguaje preferido y tu conjunto de herramientas de compilación para generar el código protobuffer relevante.

  3. Genera tu solicitud. Se deben enviar dos metadatos obligatorios con la solicitud:

    • X-Goog-Api-Key debe configurarse como clave de API.
    • X-Goog-Fieldmask debe configurarse en una lista separada por comas de los campos que necesitas de la respuesta. Por ejemplo, X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status. Puedes usar el carácter comodín (*) para indicar todos los campos, pero no se recomienda. Usa el carácter comodín para probar y comprender la respuesta de la API, pero enumera explícitamente los campos que deseas en la máscara de campo del código de producción.

      Si deseas obtener más información para construir la string de máscara de campo, consulta https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto. Ten en cuenta que inhabilitar campos que no necesitas puede reducir la latencia, ya que estos pueden requerir procesamiento adicional. Tu latencia se mantendrá estable si especificas los campos que necesitas y, más adelante, se agregan campos nuevos que requieren más procesamiento.

  4. Envía tu solicitud a routespreferred.googleapis.com:443.Debes usar el protocolo TLS.

Para ver ejemplos del uso del método ComputeRouteMatrix, consulta Cómo calcular ejemplos de una matriz de ruta (beta).

Una característica distintiva del método ComputeRouteMatrix es que los códigos de error se pueden mostrar para todo el flujo o para elementos individuales. Por ejemplo, la conexión de transmisión muestra un error si la solicitud tiene un formato incorrecto (por ejemplo, no tiene orígenes). Sin embargo, si un error se aplica solo a algunos elementos de la transmisión (por ejemplo, establecer un ID de lugar no válido para un origen), solo los elementos afectados por el error contienen códigos de error.

No se garantiza que los elementos que muestra la transmisión se muestren en ningún orden. Por este motivo, cada elemento contiene un origin_index y una destination_index. En el caso de los orígenes y destinos que se especifican 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.

Cálculo de tarifas de peaje

Para obtener más información sobre cómo calcular las tarifas de peajes, consulta Cómo calcular las tarifas de peajes.

Para ver ejemplos de cómo calcular tarifas de peaje, consulta cómo calcular ejemplos de matrices de rutas.