La API de Routes Preferred ofrece la posibilidad de solicitar información sobre las condiciones de tráfico a lo largo del polilinea. Las condiciones de tráfico se expresan en términos de categorías de velocidad (NORMAL, SLOW, TRAFFIC_JAM) aplicables en un intervalo determinado del polilínea de respuesta. Los intervalos se definen por los índices de sus puntos de polilínea inicial (inclusivo) y final (exclusivo).
Ejemplo de solicitud
El polilínea con información de tráfico está disponible a nivel de la ruta y del tramo.
A nivel de la ruta, la información de 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 respuesta.
Si la máscara de campo contiene routes.legs.travelAdvisory.speedReadingIntervals
, la respuesta contendrá los datos de tráfico a nivel de la etapa en RouteLegTravelAdvisory.
X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline,routes.travelAdvisory.speedReadingIntervals,routes.legs.polyline.encodedPolyline,routes.legs.travelAdvisory.speedReadingIntervals
Consulta "Elige los campos que se mostrarán" para obtener más detalles sobre cómo especificar la máscara de campos de respuesta.
Ejemplo de respuesta
Siempre que se solicite speedReadingIntervals
a través de la máscara de campo, se propagará en routes.travelAdvisory.speedReadingIntervals
.
El tráfico a nivel de la etapa 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 í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" } ] } } ] }
Renderiza polilíneas con información sobre el tráfico con el SDK de Maps
Te recomendamos que muestres polilíneas con información sobre 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 polilíneas. Para obtener más detalles sobre el uso de polilíneas, consulta Elementos de polilínea para Android y Elementos de polilínea 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" podría mostrarse como una línea naranja gruesa, etcétera.
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 la apariencia (para Android) y Cómo personalizar el polilinea (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