Richiesta di informazioni sul traffico sulla polilinea

L'API Routes Preferred offre la possibilità di richiedere informazioni sulle condizioni del traffico lungo la polilinea. Le condizioni del traffico sono espresse in termini di categorie di velocità (NORMALE, LENTA, TRAFFICO_INTENSO) applicabili a un determinato intervallo della polilinea della risposta. Gli intervalli sono definiti dagli indici dei punti della polilinea di inizio (inclusi) e di fine (esclusi).

Esempio di richiesta

La polilinea sensibile al traffico è disponibile sia a livello di percorso che di itinerario. A livello di percorso, le informazioni sulla velocità del traffico vengono fornite come SpeedReadingIntervals nel campo di risposta RouteTravelAdvisory. Per ricevere informazioni sul traffico insieme alla polilinea dell'itinerario, includi sia polyline che speedReadingIntervals nella maschera del campo di risposta.

Se la maschera del campo contiene routes.legs.travelAdvisory.speedReadingIntervals, la risposta conterrà i dati sul traffico a livello di segmento in RouteLegTravelAdvisory.

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

Visita la sezione "Scegliere i campi da restituire" per ulteriori dettagli sulla specifica della maschera dei campi di risposta.

Esempio di risposta

Se speedReadingIntervals vengono richiesti tramite la maschera di campo, vengono compilati in routes.travelAdvisory.speedReadingIntervals. Il traffico a livello di gamba è disponibile in routes.legs.travelAdvisory.speedReadingIntervals. Ogni intervallo è descritto da startPolylinePointIndex, endPolylinePointIndex e dalla categoria di velocità corrispondente. Tieni presente che la mancanza di un indice iniziale all'interno dell'intervallo corrisponde all'indice 0 in conformità con le pratiche di 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"
          }
        ] 
      }
    }
  ]
}

Esegui il rendering di polilinee sensibili al traffico con Maps SDK

Ti consigliamo di visualizzare le polilinee sensibili al traffico sulla mappa utilizzando le varie funzionalità offerte dagli SDK di Google Maps, tra cui colorazione, tratti e pattern personalizzati lungo i tratti della polilinea. Per maggiori dettagli sull'utilizzo delle polilinee, vedi Funzionalità delle polilinee per Android e Funzionalità delle polilinee per iOS.

Esempio di rendering della polilinea

Gli utenti di Maps SDK hanno la possibilità di definire una logica di mappatura personalizzata tra le categorie di velocità e gli schemi di rendering delle polilinee. Ad esempio, si potrebbe decidere di visualizzare la velocità "NORMALE" come una linea blu spessa sulla mappa, mentre la velocità "LENTA" potrebbe essere visualizzata come una linea arancione spessa e così via.

I seguenti snippet aggiungono una polilinea blu spessa con segmenti geodetici da Melbourne a Perth. Per maggiori informazioni, vedi Personalizzazione degli aspetti (per Android) e Personalizzare la polilinea (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