Die Routes Preferred API bietet die Möglichkeit, Informationen zu den Verkehrsbedingungen entlang der Polylinie anzufordern. Die Verkehrsbedingungen werden in Form von Geschwindigkeitskategorien (NORMAL, SLOW, TRAFFIC_JAM) ausgedrückt, die für ein bestimmtes Intervall der Antwortpolylinie gelten. Die Intervalle werden durch die Indizes ihrer Start- (einschließlich) und Endpunkte (ausschließlich) der Polylinie definiert.
Beispielanfrage
Die verkehrsabhängige Polylinie ist sowohl auf Routen- als auch auf Streckenebene verfügbar.
Auf Routenebene werden die Informationen zur Verkehrsgeschwindigkeit als
SpeedReadingIntervals
im Antwortfeld RouteTravelAdvisory bereitgestellt.
Wenn Sie Verkehrsinformationen neben der Polylinie der Route erhalten möchten, fügen Sie sowohl polyline als auch speedReadingIntervals in die Feldmaske der Antwort ein.
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 Feldmaske der Antwort 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 Verkehrsdaten auf Streckenebene sind unter routes.legs.travelAdvisory.speedReadingIntervals verfügbar.
Jedes Intervall wird durch startPolylinePointIndex, endPolylinePointIndex und die entsprechende Geschwindigkeitskategorie beschrieben.
Das Fehlen eines Startindex innerhalb des Intervalls
entspricht gemäß den proto3-Praktiken dem Index 0.
{ "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 anzuzeigen, 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 das Rendern von Polylinien
Nutzer des Maps SDK können eine benutzerdefinierte Zuordnungslogik zwischen den Geschwindigkeitskategorien und den Schemas für das Rendern von Polylinien definieren. Beispielsweise kann die Geschwindigkeit „NORMAL“ als dicke blaue Linie auf der Karte angezeigt werden, während die Geschwindigkeit „SLOW“ 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