2016-04-20 10 views
0

Wie kann ich eine polyline aus der Direction API JSON Antwort bekommen?iOS - Erstellen Polylinie von Google Maps Anfahrt API Antwort

Die Verwendung der overview_polyline ist keine Option, da es nur eine geglättete Version der tatsächlichen polyline ist.

Ich habe auch versucht, die Anfangs- und Endpositionskoordinaten von den Schritten zu erhalten, aber diese geben mir nur eine sehr ungenaue polyline, weil sie nur ein paar Koordinaten enthalten.

Wie kann ich eine genaue polyline aus der Directs Antwort erhalten?

EDIT: Mit @SaxonDruce Antwort, ich aber genau Polylinien bekommen kann, sie sehen wie folgt aus:

enter image description here

Antwort

0

auf the sample response Basierend, werden Sie gleich etwas brauchen:

response.routes[0].legs[0].steps[i].polyline.points 

Also, die erste Route, dann das erste Bein, dann Schleife über die Schritte, dann bekommen Sie die Polylinie, dann bekommen Sie die Punkte.

+0

Aber dies wird mir die codierten Polylinien individuell für jeden Schritt geben, so dass sie für jeden Schritt mit mehreren GMSPaths gezeichnet werden müssten. Wie kann ich sie in einem einzigen GMSPath kombinieren? Auch die Linien sind sehr jiggery und haben scharfe Kanten mit dieser Methode! –

+0

Ihre Methode funktioniert aber ziemlich gut, das einzige Problem ist, dass (wegen der Zeichnung jeder Polylinie für die einzelnen Schritte) die Linien sehr segmentiert und uneben erscheinen (siehe bearbeitete Antwort). –

+0

@ BalázsVincze für die erste Ausgabe, fand ich http://StackOverflow.com/A/24096653/148241, die Code für die Kombination mehrerer 'GMSPath' Objekte in einem einzigen' GMSMutablePath' hat. –

0

Um zur Antwort saxon druce hinzuzufügen, können Sie alle Schritte des ersten Beins durchlaufen und alle Punkte zu einer Polylinie kombinieren.

List<LatLng> points = new ArrayList<>(); 
for (DirectionsStep step : legs[i].steps) { 
    points.addAll(step.polyline.decodePath()); 
} 
EncodedPolyline legPolyline = new EncodedPolyline(points);