2016-04-20 8 views
0

Как я могу получить polyline из ответа JSON Directions API?iOS - построение полилинии из Google Maps Directions API ответ

Использование overview_polyline не является вариантом, так как это только сглаженная версия фактического polyline.

Я также попытался получить начальные и конечные координаты местоположения со ступеней, однако это даст мне очень неточно polyline, потому что они содержат только несколько координаторов.

Как я могу получить точный polyline из ответа Directions?

EDIT: Используя @SaxonDruce ответ, я могу получить точные ломаные линии, однако, они выглядят так:

enter image description here

ответ

0

на основе the sample response, вам нужно что-то эквивалентно:

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

Итак, получите первый маршрут, затем первый этап, затем перейдите по этапу, затем получите полилинию, затем получите точки.

+0

Но это даст мне закодированные полилинии индивидуально для каждого шага, поэтому их нужно будет нарисовать, используя несколько GMSPaths для каждого шага. Как я могу объединить их в один GMSPath? Кроме того, линии очень джиггери и имеют острые края, используя этот метод! –

+0

Ваш метод работает довольно хорошо, однако проблема заключается только в том, что (из-за рисования каждой полилинии для отдельных шагов) линии выглядят очень сегментированными и неравномерными (см. Отредактированный ответ). –

+0

@ BalázsVincze для первой проблемы, я нашел http://stackoverflow.com/a/24096653/148241, который имеет некоторый код для объединения нескольких объектов 'GMSPath' в единый' GMSMutablePath'. –

0

Чтобы добавить к ответу saxon druce, вы можете перебрать все этапы первого этапа и объединить все точки для формирования полилинии.

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