Verkehrsinformationen für eine Polylinie anfordern

Mit der Routes Preferred API können Sie Informationen zur Verkehrslage entlang der Polylinie anfordern. Die Verkehrslage wird in Geschwindigkeitskategorien (NORMAL, SLOW, TRAFFIC_JAM) angegeben, die für ein bestimmtes Intervall der Antwort-Polylinie gelten. Die Intervalle werden durch die Indexe der Start- (inklusive) und Endpunkte (exklusive) der Polylinie definiert.

Beispielanfrage

Die Polylinie mit Berücksichtigung der aktuellen Verkehrslage ist sowohl auf Routen- als auch auf Streckenabschnittsebene verfügbar. Auf Routenebene werden die Informationen zur Verkehrsgeschwindigkeit als SpeedReadingIntervals im Antwortfeld RouteTravelAdvisory bereitgestellt. Wenn Sie neben der Polylinie der Route auch Verkehrsinformationen erhalten möchten, fügen Sie sowohl polyline als auch speedReadingIntervals in die Antwortfeldmaske ein.

Wenn die Feldmaske routes.legs.travelAdvisory.speedReadingIntervals enthält, enthält die Antwort die Verkehrsdaten auf Abschnittsebene 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. Die Verkehrsinformationen auf Abschnittsebene sind unter routes.legs.travelAdvisory.speedReadingIntervals verfügbar. Jedes Intervall wird durch startPolylinePointIndex, endPolylinePointIndex und die entsprechende Geschwindigkeitskategorie beschrieben. Beachten Sie, dass das Fehlen eines 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"
          }
        ] 
      }
    }
  ]
}

Verkehrsabhängige Polylinien mit dem Maps SDK rendern

Wir empfehlen, verkehrsabhängige Polylinien auf der Karte mit den verschiedenen Funktionen der Google Maps SDKs darzustellen, z. B. mit benutzerdefinierten Farben, Strichen und Mustern entlang der Polylinienabschnitte. Weitere Informationen zur Verwendung von Polylinien finden Sie unter Polylinien-Features für Android und Polylinien-Features für iOS.

Beispiel für das Rendern von Polylinien

Nutzer des Maps SDK können eine benutzerdefinierte Zuordnungslogik zwischen den Geschwindigkeitskategorien und den Polylinien-Renderingschemas definieren. Beispielsweise könnte man die Geschwindigkeit „NORMAL“ als dicke blaue Linie auf der Karte darstellen, während die Geschwindigkeit „LANGSAM“ als dicke orangefarbene Linie angezeigt wird.

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