Verkehrsinformationen für eine Polylinie anfordern

Mit der Routes Preferred API können Informationen zur Verkehrslage entlang der Polylinie angefordert werden. Die Verkehrslage wird in Form von Geschwindigkeitskategorien (NORMAL, SLOW, TRAFFIC_JAM) für ein bestimmtes Intervall der Antwortpolygone ausgedrückt. Die Intervalle werden durch die Indexe ihrer Start- (inklusiven) und End- (exklusiven) Polylinienpunkte definiert.

Beispielanfrage

Eine Polylinie, die die Verkehrslage berücksichtigt, ist sowohl auf Routen- als auch auf Streckenebene verfügbar. Auf Routenebene werden die Informationen zur Verkehrsgeschwindigkeit als SpeedReadingIntervals im Antwortfeld RouteTravelAdvisory bereitgestellt. Um Verkehrsinformationen neben der Polylinie der Route zu erhalten, müssen Sie sowohl polyline als auch speedReadingIntervals in die Antwortfeldmaske aufnehmen.

Wenn die Feldmaske routes.legs.travelAdvisory.speedReadingIntervals enthält, enthält die Antwort die Verkehrsdaten auf Streckenebene unter RouteLegTravelAdvisory.

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

Weitere Informationen zum Angeben der Antwortfeldmaske finden Sie unter Felder für die Rückgabe auswählen.

Beispielantwort

Solange speedReadingIntervals über die Feldmaske angefordert werden, werden sie unter routes.travelAdvisory.speedReadingIntervals ausgefüllt. Der Traffic auf Streckenebene ist unter routes.legs.travelAdvisory.speedReadingIntervals verfügbar. Jedes Intervall wird durch seine startPolylinePointIndex, endPolylinePointIndex und die entsprechende Geschwindigkeitskategorie beschrieben. Beachten Sie, dass der fehlende Startindex innerhalb des Intervalls gemäß den Proto3-Praktiken dem Index 0 entspricht.

{
  "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"
          }
        ] 
      }
    }
  ]
}

Traffic-sensitive Polylinien mit dem Maps SDK rendern

Wir empfehlen, verkehrsbewusste Polylinien auf der Karte mithilfe der verschiedenen Funktionen der Google Maps SDKs darzustellen, einschließlich benutzerdefinierter Farben, Striche und Muster entlang der Polylinien. Weitere Informationen zur Verwendung von Polylinien finden Sie unter Polylinienfunktionen für Android und Polylinienfunktionen für iOS.

Beispiel für Polylinien-Rendering

Die Nutzer des Maps SDK haben die Möglichkeit, eine benutzerdefinierte Zuordnungslogik zwischen den Geschwindigkeitskategorien und den Renderingschemas der Polylinie zu definieren. Beispielsweise könnte die Geschwindigkeit „Normal“ als dicke blaue Linie auf der Karte angezeigt werden, die Geschwindigkeit bei „Langsam“ als orangefarbene Linie usw.

Mit den folgenden Snippets wird eine dicke blaue Polylinie mit geodätischen Segmenten von Melbourne nach Perth hinzugefügt. Weitere Informationen finden Sie unter Darstellung anpassen (für Android) und Polylinie anpassen (für 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