Google Maps Utils, как декодировать значения полилиний из списка?

Я использую Google Maps Directions Api и библиотеку Google Maps Utils, чтобы нарисовать путь между моим местоположением и маркером, я извлекал поле overview-polyline из Directions Api, но нарисованная полилиния была неправильной, поэтому теперь я пытаюсь построить полилинию шаг за шагом, но я столкнулся с проблемой, я смог добавить в массив все полилинии, но теперь, как мне получить их из массива, чтобы декодировать и построить их;

Это JSON:

{
geocoded_waypoints: [
{},
{}
],
routes: [
{
bounds: {},
copyrights: "Dados do mapa ©2017 Google, Inst. Geogr. Nacional",
legs: [
{
distance: {},
duration: {},
end_address: "14 Avenue Latécoère, 31700 Cornebarrieu, França",
end_location: {},
start_address: "R. Zeferino Brandão 9, 2005 Santarém, Portugal",
start_location: {},
steps: [
{
distance: {},
duration: {},
end_location: {},
html_instructions: "Siga para <b>noroeste</b> na <b>R. Zeferino Brandão</b> em direção a <b>Tv. de São Domingos</b>",
polyline: {
points: "k|nnF`p_t@GB{@t@MFQPMLKXETEZCVCL?@?BAD?@?DAFC|@"
},
start_location: {},
travel_mode: "DRIVING"
},
{},

Вот как я расшифровал



Ответы (2)


Вы можете использовать метод PolyUtil.decode из библиотеки служебных программ Google Maps Android API. :

List<LatLng> decoded = PolyUtil.decode(caminho.get("points"));

В вашем случае, если вы хотите декодировать с вашего listaPolylines:

for (Map polyline : listaPolylines) {
    List<LatLng> decoded = PolyUtil.decode(polyline.get("points"));

    // Do something with your decoded polyline. For example drawing it on your map
    mMap.addPolyline(new PolylineOptions().addAll(decoded));
}
person antonio    schedule 03.04.2017
comment
Я забыл упомянуть, что использую хэш-карту (caminho) :) и ваш код не работает с хэш-картой, вы можете помочь? - person alb; 03.04.2017
comment
for (строковая полилиния: listaPolylines) по-прежнему не работает, для этого требуется хэш-карта - person alb; 03.04.2017
comment
Я должен добавить PolylineOptions().addAll(decoded) внутри for, верно? - person alb; 03.04.2017
comment
Вот и все. Обновлено снова - person antonio; 03.04.2017
comment
Давайте продолжим обсуждение в чате. - person alb; 03.04.2017

Создайте пользовательскую модель и создайте список массивов этой пользовательской модели для хранения вашего LatLng.

Что-то вроде ниже:

public class CustomLocations{
private LatLng latLng;
public customLocations(LatLng latLng){
this.latLng = latLng
}
public void setLatLng(LatLng latLng){
this.latLng = latLng
}
public LatLng getLatLng(){
return latLng;
}
}

//Now, create an array list:
ArrayList<CustomLocations> yourArray = new ArrayList<>();

//add locations:
yourArray.add(new CustomLocations(yourLatLng));

//retrieve:
yourArray.get(i).getLatLng();
person Kaveesh Kanwal    schedule 03.04.2017