Mit der Routes Preferred API können Sie Informationen zu den Verkehrsbedingungen entlang der Polylinie anfordern. Die Verkehrslage wird in Geschwindigkeitskategorien (NORMAL, SLOW, TRAFFIC_JAM) ausgedrückt, die für ein bestimmtes Intervall der Antwort-Polylinie gelten. Die Intervalle werden durch die Indexe ihrer Start- (inklusive) und Endpunkte (exklusiv) der Polylinie definiert.
Beispielanfrage
Die verkehrsabhängige Polylinie ist sowohl auf Routen- als auch auf Etappenebene verfügbar.
Auf Routenebene werden die Informationen zur Verkehrsgeschwindigkeit als SpeedReadingIntervals im Antwortfeld RouteTravelAdvisory bereitgestellt.
Wenn Sie Verkehrsinformationen zusammen mit der Polylinie der Route 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 Segmentebene 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 Zugriffe auf Segmentebene 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 im Intervall 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, Polylinien mit Verkehrsdaten auf der Karte mithilfe der 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 Polylinienfunktionen für Android und Polylinienfunktionen für iOS.
Beispiel für das Rendern von Polylinien
Nutzer des Maps SDK haben die Möglichkeit, eine benutzerdefinierte Zuordnungslogik zwischen den Geschwindigkeitskategorien und den Schemas für das Rendern von Polylinien zu definieren. Beispielsweise könnte die normale Geschwindigkeit als dicke blaue Linie auf der Karte dargestellt werden, während die langsame Geschwindigkeit als dicke orangefarbene Linie dargestellt 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