Solicita información sobre el tráfico en la polilínea

La API de Routes Preferred ofrece la posibilidad de solicitar información sobre las condiciones del tráfico a lo largo de la polilínea. Las condiciones de tráfico se expresan en términos de categorías de velocidad (NORMAL, SLOW, TRAFFIC_JAM) aplicables en un intervalo determinado de la polilínea de la respuesta. Los intervalos se definen por los índices de sus puntos de inicio (inclusivo) y final (exclusivo) de la polilínea.

Ejemplo de solicitud

La polilínea que tiene en cuenta el tráfico está disponible tanto a nivel de la ruta como del tramo. A nivel de la ruta, la información sobre la velocidad del tráfico se proporciona como SpeedReadingIntervals en el campo de respuesta RouteTravelAdvisory. Para recibir información del tráfico junto con la polilínea de la ruta, incluye polyline y speedReadingIntervals en la máscara de campo de la respuesta.

Si la máscara de campo contiene routes.legs.travelAdvisory.speedReadingIntervals, la respuesta contendrá los datos de tráfico a nivel de tramo en RouteLegTravelAdvisory.

X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline,routes.travelAdvisory.speedReadingIntervals,routes.legs.polyline.encodedPolyline,routes.legs.travelAdvisory.speedReadingIntervals

Visita "Elige los campos que se devolverán" para obtener más detalles sobre cómo especificar la máscara de campos de respuesta.

Ejemplo de respuesta

Siempre que se soliciten los speedReadingIntervals a través de la máscara de campo, se propagarán en routes.travelAdvisory.speedReadingIntervals. El tráfico a nivel de tramo está disponible en routes.legs.travelAdvisory.speedReadingIntervals. Cada intervalo se describe con su startPolylinePointIndex, endPolylinePointIndex y la categoría de velocidad correspondiente. Ten en cuenta que la falta de un índice de inicio dentro del intervalo corresponde al índice 0, de acuerdo con las prácticas de proto3.

{
  "routes": [
    {
      "legs": {
        "polyline": {
          "encodedPolyline": "}boeF~zbjVAg@EmB`GWHlD"
        },
        "travelAdvisory": {
          "speedReadingIntervals": [
            {
              "endPolylinePointIndex": 1,
              "speed": "NORMAL"
            },
            {
              "startPolylinePointIndex": 1,
              "endPolylinePointIndex": 2,
              "speed": "SLOW"
            },
            {
              "startPolylinePointIndex": 2,
              "endPolylinePointIndex": 4,
              "speed": "NORMAL"
            }
          ] 
        }
      },
      "polyline": {
        "encodedPolyline": "}boeF~zbjVAg@EmB`GWHlD"
      },
      "travelAdvisory": {
        "speedReadingIntervals": [
          {
            "endPolylinePointIndex": 1,
            "speed": "NORMAL"
          },
          {
            "startPolylinePointIndex": 1,
            "endPolylinePointIndex": 2,
            "speed": "SLOW"
          },
          {
            "startPolylinePointIndex": 2,
            "endPolylinePointIndex": 4,
            "speed": "NORMAL"
          }
        ] 
      }
    }
  ]
}

Cómo renderizar polilíneas con información del tráfico con el SDK de Maps

Te recomendamos que muestres polilíneas que tengan en cuenta el tráfico en el mapa con las diversas funciones que ofrecen los SDKs de Google Maps, como colores, trazos y patrones personalizados a lo largo de los tramos de la polilínea. Para obtener más detalles sobre el uso de polilíneas, consulta Funciones de polilíneas para Android y Funciones de polilíneas para iOS.

Ejemplo de renderización de polilínea

Los usuarios del SDK de Maps tienen la oportunidad de definir una lógica de asignación personalizada entre las categorías de velocidad y los esquemas de renderización de polilíneas. Por ejemplo, se podría decidir mostrar la velocidad "NORMAL" como una línea azul gruesa en el mapa, mientras que la velocidad "LENTA" se podría mostrar como una línea naranja gruesa, y así sucesivamente.

Los siguientes fragmentos agregan una polilínea azul gruesa con segmentos geodésicos desde Melbourne hasta Perth. Para obtener más información, consulta Cómo personalizar la apariencia (para Android) y Cómo personalizar la polilínea (para iOS).

Android

Java

Polyline line = map.addPolyline(new PolylineOptions()
    .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734))
    .width(25)
    .color(Color.BLUE)
    .geodesic(true));

Kotlin

val line: Polyline = map.addPolyline(
  PolylineOptions()
    .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734))
    .width(25f)
    .color(Color.BLUE)
    .geodesic(true)
)

iOS

Objective-C

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 10.f;
polyline.strokeColor = .blue;
polyline.geodesic = YES;
polyline.map = mapView;

Swift

let path = GMSMutablePath()
path.addLatitude(-37.81319, longitude: 144.96298)
path.addLatitude(-31.95285, longitude: 115.85734)
let polyline = GMSPolyline(path: path)
polyline.strokeWidth = 10.0
polyline.geodesic = true
polyline.map = mapView