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à (NORMAL, SLOW, TRAFFIC_JAM) applicabili a un determinato intervallo della polilinea della risposta. Gli intervalli sono definiti dagli indici dei punti di inizio (incluso) e di fine (escluso) della polilinea.

Esempio di richiesta

La polilinea sensibile al traffico è disponibile sia a livello di percorso sia a livello di tratto. 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 del percorso, includi sia polyline che speedReadingIntervals nella maschera dei campi della risposta.

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

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

Per ulteriori dettagli su come specificare la maschera di campo della risposta, consulta "Scegli i campi da restituire".

Esempio di risposta

Se speedReadingIntervals viene richiesto tramite la maschera di campo, viene compilato in routes.travelAdvisory.speedReadingIntervals. Il traffico a livello di tratta è disponibile in routes.legs.travelAdvisory.speedReadingIntervals. Ogni intervallo è descritto da startPolylinePointIndex, endPolylinePointIndex e dalla categoria di velocità corrispondente. Tieni presente che l'assenza di un indice iniziale all'interno dell'intervallo corrisponde all'indice 0 in conformità con le prassi 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 delle polilinee sensibili al traffico con l'SDK Maps

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

Esempio di rendering di polilinee

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 saperne di più, consulta Personalizzazione degli aspetti (per Android) e Personalizza 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