L'API Routes consente di richiedere informazioni sulle condizioni del traffico lungo una polilinea sensibile al traffico. Le condizioni del traffico sono espresse in termini di categorie di velocità (NORMAL
, SLOW
, TRAFFIC_JAM
) applicabili in un determinato intervallo della polilinea della risposta. Gli intervalli sono definiti dagli indici dei punti polilinea iniziali (inclusivi) e finali (esclusivi).
Per ulteriori informazioni sulle polilinee, consulta:
- Confronto tra qualità e latenza per informazioni sulla configurazione della qualità della trama
- Il formato algoritmo polilinea codificato descrive l'algoritmo per la codifica di una polilinea.
- L'utilità di codifica dei polilinee interattivi consente di creare polilinee codificate in un'interfaccia utente o di decodificare le polilinee da visualizzare su una mappa. Ad esempio, utilizza questa utilità per decodificare una polilinea creata dal codice seguente.
Restituire una polilinea
Una polilinea è rappresentata da un oggetto Polyline (REST) o Polyline (gRPC). Puoi restituire una polilinea nella risposta sia a livello di rotta sia a livello di gamba.
Stabilisci quale polilinea restituire utilizzando la maschera del campo di risposta:
A livello di percorso, restituisci una polilinea nella risposta includendo
routes.polyline
nella maschera del campo di risposta.A livello di gamba, restituisci una polilinea nella risposta per ogni tratto del percorso includendo
routes.legs.polyline
.
Ad esempio, per restituire una polilinea per l'intero percorso e per ogni tratto:
X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline,routes.legs.polyline
Configura tipo di polilinea
Il metodo computeRoutes (REST) e il metodo ComputeRoutes (gRPC) supportano l'opzione di richiesta polylineEncoding
per il controllo del tipo di polilinea.
polylineEncoding
specifica come codificare la polilinea come
ENCODED_POLYLINE
(impostazione predefinita), nel caso dell'algoritmo di codifica della polilinea, oppure in
GEO_JSON_LINESTRING
, ossia nel formato GeoJSON LineString.
Ad esempio, nel corpo della richiesta:
{ "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": "2019-10-15T15:01:23.045123456Z", ... }
Informazioni sul traffico di ritorno
Puoi configurare la risposta in modo da includere informazioni sui pedaggi e sulle possibili restrizioni della zona di traffico:
A livello di percorso, queste informazioni sono incluse in un oggetto RouteTravelAdvisory (REST) o RouteTravelAdvisory (gRPC).
A livello di gamba, queste informazioni sono incluse in un oggetto RouteLegTravelAdvisory (REST) o RouteLegTravelAdvisory (gRPC).
Sia RouteTravelAdvisory che RouteLegTravelAdvisory includono un campo array per informazioni sulla velocità del traffico che descrivono in dettaglio la densità del traffico. Ogni oggetto nell'array è rappresentato da un oggetto SpeedReadingInterval (REST) o SpeedReadingInterval (gRPC).
Un oggetto SpeedReadingInterval include la lettura della velocità per un intervallo di percorso. L'intero array di oggetti copre l'intera polilinea della route senza sovrapposizioni. Il punto iniziale di un intervallo specificato è uguale al punto finale dell'intervallo precedente.
Per configurare il metodo per restituire le informazioni sul traffico con la polilinea, utilizza la maschera del campo di risposta:
A livello di percorso, restituisci tutte le informazioni sul traffico nella risposta includendo
routes.travelAdvisory
nella maschera del campo di risposta. Per restituire solo il SpeedReadingInterval, specificaroutes.travelAdvisory.speedReadingIntervals
A livello di gamba, restituisci le informazioni sul traffico nella risposta per ogni tratta del percorso includendo
routes.legs.travelAdvisory.speedReadingIntervals
oroutes.legs.steps.travelAdvisory.speedReadingIntervals
.
Quando restituisci informazioni sul traffico, in genere fornisci sia polilinea sia informazioni sul traffico nella risposta:
X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline,routes.travelAdvisory,routes.legs.polyline,routes.legs.travelAdvisory
Esempio di risposta per una polilinea sensibile al traffico
Nella risposta, il traffico a livello di percorso è disponibile in
routes.travelAdvisory.speedReadingIntervals
. Il traffico a livello di gambe è disponibile in routes.legs.travelAdvisory.speedReadingIntervals
.
Ogni intervallo è descritto da startPolylinePointIndex
,
endPolylinePointIndex
e dalla categoria di velocità corrispondente.
Nota che la mancanza di indice iniziale nell'intervallo corrisponde all'indice 0, in conformità con le pratiche proto3.
I valori startPolylinePointIndex
e endPolylinePointIndex
non sono sempre consecutivi. Ad esempio:
{ "startPolylinePointIndex": 2, "endPolylinePointIndex": 4, "speed": "NORMAL" }
In questo caso, le condizioni del traffico erano uguali dall'indice 2 all'indice 4.
Di seguito è riportata la risposta completa:
{ "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" } ] } } ] }
Esegui il rendering di Politiche sensibili al traffico con l'SDK di Maps
Ti consigliamo di visualizzare sulla mappa polilinee con informazioni sul traffico utilizzando le varie funzionalità offerte dagli SDK di Google Maps, tra cui colorazione, tratti e pattern personalizzati lungo i tratti di polilinea. Per maggiori dettagli sull'utilizzo delle polilinee, consulta Funzionalità di Polyline per Android e Funzionalità di Polyline per iOS.
Esempio di rendering di polilinea
Gli utenti dell'SDK di Maps hanno la possibilità di definire una logica di mappatura personalizzata tra le categorie di velocità e gli schemi di rendering polilineali. Ad esempio, si potrebbe decidere di visualizzare la velocità "NORMAL" come una linea spessa blu sulla mappa, mentre la velocità "Lenta" potrebbe essere visualizzata come una spessa linea arancione e così via.
I seguenti snippet aggiungono una polilinea spessa blu con segmenti geodetici da Mboubourne a Perth. Per ulteriori informazioni, consulta Personalizzare gli aspetti (per Android) e Personalizzare Polyline (per 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