La API de Routes Preferred ofrece la posibilidad de solicitar información sobre las condiciones de tráfico en 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 respuesta. Los intervalos se definen según los índices de sus puntos de polilínea inicial (inclusive) y final (exclusivos).
Ejemplo de solicitud
La polilínea con información de tráfico está disponible tanto a nivel de ruta como de tramo.
A nivel de la ruta, la información de velocidad del tráfico se proporciona como SpeedReadingIntervals en el campo de respuesta RouteTravelAdvisory.
Para recibir información sobre el tráfico junto con la polilínea de la ruta, incluye polyline
y speedReadingIntervals
en la máscara del campo de respuesta.
Si la máscara de campo contiene routes.legs.travelAdvisory.speedReadingIntervals
, la respuesta contendrá los datos de tráfico a nivel del segmento 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 detalles adicionales sobre cómo especificar la máscara de campo de respuesta.
Ejemplo de respuesta
Siempre que speedReadingIntervals
se soliciten a través de la máscara de campo, se propagarán en routes.travelAdvisory.speedReadingIntervals
.
El tráfico a nivel del segmento está disponible en routes.legs.travelAdvisory.speedReadingIntervals
.
Cada intervalo se describe mediante su startPolylinePointIndex
, endPolylinePointIndex
y la categoría de velocidad correspondiente.
Ten en cuenta que la falta del í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 que reconocen el tráfico con el SDK de Maps
Te recomendamos mostrar en el mapa las polilíneas compatibles con el tráfico mediante las diversas funciones que ofrecen los SDK de Google Maps, incluidos los colores, los trazos y los patrones personalizados de los trazos de polilíneas. Para obtener más información 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íneas
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. A modo de ejemplo, se puede decidir mostrar la velocidad "NORMAL" como una línea gruesa de color azul en el mapa, mientras que la velocidad "Lenta" puede aparecer como una línea gruesa de color naranja y así sucesivamente.
En los siguientes fragmentos, se agrega una polilínea azul gruesa con segmentos geodésicos desde Melbourne hasta Perth. Para obtener más información, consulta Cómo personalizar los aspectos (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