Configurar la calidad frente a la latencia

Cuando realizas una solicitud, es posible que tengas que decidir si es mejor mostrar los resultados más precisos posibles o mostrar los resultados lo más rápido posible. La API de Routes proporciona opciones que te permiten controlar la calidad de los datos de respuesta en comparación con la latencia de la respuesta.

Configura el nivel de los datos de tráfico

La API de Routes proporciona RoutingPreference (REST) y RoutingPreference (gRPC) que te permiten especificar preferencias de enrutamiento para calcular rutas. Estas preferencias difieren en la medida en que influyen en las condiciones de tráfico en el cálculo de la ruta. Cada preferencia de enrutamiento produce resultados que difieren en un grado en relación con la calidad de la ruta, la hora de llegada estimada y la latencia de respuesta.

Las condiciones de tráfico caracterizan la velocidad del flujo de tráfico. Por ejemplo:

  • Cuando no hay congestión, las condiciones de tráfico se consideran normales y el tráfico fluye a la velocidad normal sin obstáculos.
  • Cerca de la hora pico, la densidad del tráfico aumenta, lo que hace que el tráfico sea más lento, lo que produce condiciones de tráfico ligero a moderado.
  • En tráfico de choque a parachoques, la velocidad del flujo se detiene para generar un estado de tráfico intenso.

Tráfico desconocido

Cuando configuras la preferencia de enrutamiento TRAFFIC_UNAWARE, las rutas se calculan sin tener en cuenta las condiciones actuales del tráfico. Esta preferencia de enrutamiento proporciona la latencia de respuesta más baja (las respuestas se muestran más rápido).

TRAFFIC_UNAWARE es la configuración predeterminada.

En la respuesta:

  • La hora de llegada se encuentra en la propiedad de respuesta duration.

  • Las propiedades de respuesta duration y staticDuration contienen el mismo valor.

Usa esta preferencia de enrutamiento cuando quieras que las respuestas se muestren más rápido y los detalles del enrutamiento aproximado sean suficientes.

Conocimiento del tráfico

Cuando estableces la preferencia de enrutamiento TRAFFIC_AWARE, las rutas se calculan teniendo en cuenta las condiciones actuales del tráfico. Como resultado, los detalles de la ruta y la ruta reflejan con mayor precisión las condiciones del mundo real. Debido a que este aumento en la calidad de los datos proviene a expensas de la latencia de respuesta, las optimizaciones de rendimiento se aplican para reducir gran parte de la latencia.

En la respuesta:

  • La hora de llegada que considera el tráfico en tiempo real está incluida en la propiedad de respuesta duration.

  • La propiedad de respuesta staticDuration contiene la duración de recorrer la ruta sin tener en cuenta las condiciones del tráfico.

Usa esta preferencia de enrutamiento cuando quieras detalles de enrutamiento más precisos que TRAFFIC_UNAWARE, pero no te importa si las respuestas se muestran con un aumento moderado en la latencia.

Tráfico óptimo

Cuando estableces la preferencia de enrutamiento TRAFFIC_AWARE_OPTIMAL, las rutas se calculan teniendo en cuenta las condiciones actuales del tráfico, pero no se aplican optimizaciones de rendimiento. En este modo, el servidor realiza una búsqueda más exhaustiva de la red de rutas para encontrar la ruta óptima.

La preferencia de enrutamiento TRAFFIC_AWARE_OPTIMAL es equivalente al modo que usan maps.google.com y la app para dispositivos móviles de Google Maps.

Cuando se usa esta opción con Compute Matrix Matrix, la cantidad de elementos en una solicitud (cantidad de orígenes × cantidad de destinos) no puede superar los 100. Para obtener más información sobre los límites de la matriz de ruta de Compute, consulta Cómo calcular una matriz de ruta.

En la respuesta:

  • La hora de llegada que considera el tráfico en tiempo real está incluida en la propiedad de respuesta duration.

  • La propiedad de respuesta staticDuration contiene la duración de recorrer la ruta sin tener en cuenta las condiciones del tráfico.

Esta preferencia de enrutamiento proporciona la latencia de respuesta más alta (es decir, las respuestas se muestran con el retraso más largo). Usa esta preferencia de enrutamiento cuando desees obtener resultados de la más alta calidad, sin importar cuánto tiempo demoren las respuestas.

Efecto de la configuración de la hora de salida

De forma opcional, usa la propiedad departureTime a fin de establecer la hora deseada para la salida de un viaje. Si no configuras la propiedad departureTime, el valor predeterminado es la hora en que realizas la solicitud.

  • Para TRAFFIC_UNAWARE, no puedes configurar departureTime porque la elección de la ruta y la duración se basan en la red de rutas y las condiciones promedio de tráfico independiente del tiempo.

  • Para TRAFFIC_AWARE y TRAFFIC_AWARE_OPTIMAL, que tienen en cuenta las condiciones del tráfico en vivo, el tráfico en vivo se vuelve más importante cuanto más cerca esté departureTime. Cuanto más establezcas la hora de salida en el futuro, más consideración se tendrá en las condiciones históricas del tráfico.

Ejemplo de configuración de preferencias de enrutamiento

En el siguiente código JSON, se muestra cómo establecer la preferencia de enrutamiento en un cuerpo de entidad de mensaje de solicitud.

{
  "origin":{
    "location":{
      "latLng":{
        "latitude":37.419734,
        "longitude":-122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude":37.417670,
        "longitude":-122.079595
      }
    }
  },
  "travelMode":"DRIVE",
  "routingPreference":"TRAFFIC_AWARE_OPTIMAL"
}

Cómo configurar la calidad de la polilínea

La API de Routes te permite solicitar información sobre las condiciones de tráfico a través de una polilínea compatible con el tráfico. Para obtener más información, consulta Cómo solicitar polilíneas.

La calidad de una polilínea se puede describir en los siguientes términos:

  • La cantidad de puntos que conforman la polilínea

    Cuantos más puntos haya, más suave será la polilínea (especialmente en las curvas).

  • La precisión de los puntos flotantes

    Los puntos se especifican como valores de latitud y longitud, que se representan en formato de punto flotante de precisión simple. Esto funciona bien para valores pequeños (que se pueden representar con precisión), pero la precisión disminuye a medida que los valores aumentan debido a errores de redondeo de punto flotante.

Los métodos computeRoutes (REST) y ComputeRoutes (gRPC) admiten la opción de solicitud polylineQuality para controlar la calidad de la polilínea.

Ejemplo de configuración de calidad de polilínea

polylineQuality especifica la calidad de la polilínea como HIGH_QUALITY o OVERVIEW (predeterminado). Con OVERVIEW, la polilínea se compone con una pequeña cantidad de puntos y tiene una latencia de solicitud más baja que HIGH_QUALITY.

Por ejemplo, en el cuerpo de la solicitud:

{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE",
  "polylineQuality": "HIGH_QUALITY",
  "polylineEncoding": "ENCODED_POLYLINE", 
  "departureTime": "2023-10-15T15:01:23.045123456Z",
  ...
}