如何将Arraylist Lat Long值添加到新的LatLng类中

时间:2017-12-27 10:13:49

标签: java android google-maps arraylist

请帮帮我, 我已将我的lat,long值存储到arrayList<String>,但我无法将其添加到新的LatLng类。

我必须按json获取Lat,Long值并将其添加到(String)ArrayList<String>

我想将我的所有ArrayList Lat,Long添加到latlng类中,我可以使用折线看到它。

但是我能够获得一个lat和long并且它会在我的谷歌地图中显示。但是我 无法获得所有ArrayList值。 我多次尝试过。如何通过Lat和Long测量距离 以下是我的代码;

ArrayList<String> arr;

 if(b!=null){
           arr = (ArrayList<String>)b.getStringArrayList("array_list");
           // System.out.println(arr);
        }
    String s=arr.toString();
    System.out.println(s.substring(1, s.length()-1));

    String ss=s.substring(1,s.length()-1);
    System.out.println(ss);
    d=ss.split(",");
    for (int i=0;i<d.length;i++){
        if(i%2==0){
            dd=d[i];
            System.out.println(dd +"all even");
        }else{
            nd=d[i];

            System.out.println(nd +"all odd");
        }


    }

    List<LatLng> point = new ArrayList<LatLng>();
    double pointY[]={Double.parseDouble(nd)};
    double pointX[]={Double.parseDouble(dd)};
    for (int i = 0 ; i < pointX.length; i++){

        point.add(new LatLng(pointX[i],pointY[i]));
    }

2 个答案:

答案 0 :(得分:2)

试试这个,

你的pointY,pointX用最后一项初始化。将这些放在for循环中以填充所有值

ArrayList<String> arr;
   Bundle b = getIntent().getExtras();
 if(b!=null){
           arr = (ArrayList<String>)b.getStringArrayList("array_list");
           // System.out.println(arr);
        }
    String s=arr.toString();
    System.out.println(s.substring(1, s.length()-1));

String ss=s.substring(1,s.length()-1);
System.out.println(ss);


d=ss.split(",");
 List<Double> pointY = new ArrayList<>();
    List<Double> pointX = new ArrayList<>();

for (int i=0;i<d.length;i++){
    if(i%2==0){
        dd=d[i];
        pointX.add(Double.parseDouble(dd));
        System.out.println(dd +"all even");
    }else{
        nd=d[i];
        pointY.add(Double.parseDouble(nd));
        System.out.println(nd +"all odd");
    }


}

List<LatLng> point = new ArrayList<LatLng>();
for (int i = 0 ; i < pointX.size(); i++){

    point.add(new LatLng(pointX.get(i),pointY.get(i)));
}

答案 1 :(得分:0)

我不确定你要做的是什么以及为什么你的代码不可读(抱歉你的编码风格很糟糕)。但我可以展示一下我将如何做到这一点。

public static void main(String args[]) {
    // some example data
    String coord1lat = "15.235235";
    String coord1lng = "31.776776";
    String coord2lat = "34.334346";
    String coord2lng = "31.776776";
    String[] coordinatesStringList = {coord1lat, coord1lng, coord2lat, coord2lng};

    List<LatLng> latLngList = new ArrayList<LatLng>();
    for(int i=0; i<coordinatesStringList.length; i+=2){
        LatLng pont = new LatLng(Double.parseDouble(coordinatesStringList[i]), Double.parseDouble(coordinatesStringList[i+1]));
        latLngList.add(point);
    }
}

同样,我强烈反对你将纬度和经度存储在一个数组中。我不知道你的情况,但试着至少把它们存放在夫妻中。 与String coord1 = "15.23235,16.232342"

一样