Especifica cómo y si quieres incluir datos de tráfico

Las preferencias de tráfico que seleccionas balancean la precisión de los detalles de la ruta con el rendimiento de la solicitud. Cuando realizas una solicitud, debes evaluar si es mejor mostrar los resultados más precisos o mostrarlos 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.

Establece el nivel de 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 tienen en cuenta las condiciones de tráfico en el cálculo de la ruta. Cada preferencia de enrutamiento produce resultados que difieren a un grado en relación con la calidad de la ruta, la hora de llegada estimada y la latencia de la respuesta.

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

  • Cuando no hay congestión, las condiciones del tráfico se consideran normales y el tráfico fluye a la velocidad normal sin obstáculos.
  • Cuando se acerca la hora pico, aumenta la densidad del tráfico, lo que hace que el tráfico disminuya y, por lo tanto, tenga condiciones de tráfico leve a moderado.
  • Cuando se produce un embotellamiento entre choques, la velocidad de flujo se detiene por completo, lo que genera condiciones de mucho tráfico.

Tráfico desconocido

Cuando estableces la preferencia de enrutamiento TRAFFIC_UNAWARE, las rutas se calculan sin tener en cuenta las condiciones de tráfico actuales. 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, figura lo siguiente:

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

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

Usa esta preferencia de enrutamiento cuando desees que las respuestas se muestren más rápido y los detalles de enrutamiento aproximados sean lo suficientemente buenos.

Reconocimiento de 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 de la ruta reflejan con mayor precisión las condiciones del mundo real. Debido a que este aumento en la calidad de los datos se ve a expensas de la latencia de la respuesta, las optimizaciones de rendimiento se aplican para reducir gran parte de la latencia.

En la respuesta, figura lo siguiente:

  • La ETA, que tiene en cuenta el tráfico en tiempo real, se incluye en la propiedad de respuesta duration.

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

Usa esta preferencia de enrutamiento cuando desees obtener detalles de enrutamiento más precisos que TRAFFIC_UNAWARE y, sin embargo, no te importa que las respuestas se muestren con un aumento moderado de la latencia.

Óptimo en función del tráfico

Cuando estableces la preferencia de enrutamiento TRAFFIC_AWARE_OPTIMAL, las rutas se calculan teniendo en cuenta las condiciones de tráfico actuales, 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 Route 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 Compute Route Matrix, consulta Calcula una matriz de ruta.

En la respuesta, figura lo siguiente:

  • La ETA, que tiene en cuenta el tráfico en tiempo real, se incluye en la propiedad de respuesta duration.

  • La propiedad de respuesta staticDuration contiene la duración del viaje por la ruta sin tener en cuenta las condiciones de 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 quieras obtener resultados de la mejor calidad, sin tener en cuenta el tiempo que tarden las respuestas.

Efectos de configurar la hora de salida

De manera opcional, puedes usar la propiedad departureTime para establecer la hora de salida de un viaje. Si no configuras la propiedad departureTime, se establece de forma predeterminada la hora a la que realizas la solicitud.

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

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

Ejemplo de preferencia de configuración de enrutamiento

El siguiente código JSON muestra cómo establecer la preferencia de enrutamiento en el cuerpo de una 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 las polilíneas

La API de Routes te permite solicitar información sobre las condiciones de tráfico en una polilínea que tenga en cuenta el tráfico. Consulta Cómo solicitar polilíneas para obtener más información.

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

  • La cantidad de puntos que componen la polilínea

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

  • La precisión de punto flotante de los puntos

    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.

El método computeRoutes (REST) y el método ComputeRoutes (gRPC) admiten la opción de solicitud polylineQuality para controlar la calidad de las polilíneas.

Ejemplo de configuración de la calidad de las polilíneas

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

Por ejemplo, en el cuerpo de la solicitud, sucede lo siguiente:

{
  "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",
  ...
}