Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ArrayList覆盖所有以前存储的值_Android_Google Maps_Arraylist - Fatal编程技术网

Android ArrayList覆盖所有以前存储的值

Android ArrayList覆盖所有以前存储的值,android,google-maps,arraylist,Android,Google Maps,Arraylist,我试图计算位置(源位置标记)与ArrayList中存储的其他位置(从RoutesData返回)之间的距离,并将这些位置沿距离存储在另一个ArrayList中。但当我在该数组中添加一个位置及其与源位置的距离时,它会用新添加的位置和距离覆盖所有以前存储的位置和距离 类路由数据:返回用于测量距离的LatLngs public class RoutesData { public ArrayList<LatLng> allRoutesMainStops(){ Ar

我试图计算位置(源位置标记)与ArrayList中存储的其他位置(从RoutesData返回)之间的距离,并将这些位置沿距离存储在另一个ArrayList中。但当我在该数组中添加一个位置及其与源位置的距离时,它会用新添加的位置和距离覆盖所有以前存储的位置和距离

类路由数据:返回用于测量距离的LatLngs

public class RoutesData {



    public ArrayList<LatLng> allRoutesMainStops(){
        ArrayList<LatLng> allPoints = new ArrayList<LatLng>(Arrays.asList(
                //icPoints
                new LatLng(33.582752, 73.044503),new LatLng(33.595504, 73.050912),
                //station
                new LatLng(33.601097, 73.047798),new LatLng(33.598755, 73.055607),new LatLng(33.599970, 73.063225),new LatLng(33.602757, 73.066996),new LatLng(33.604297, 73.075843),new LatLng(33.608692, 73.082024),
                //ali nawaz
                new LatLng(33.617330, 73.081743),
                //centre hosp
                new LatLng(33.630072, 73.071996),new LatLng(33.631454, 73.072416),new LatLng(33.633905, 73.062379),new LatLng(33.641462, 73.063376),new LatLng(33.646714, 73.064095),new LatLng(33.651782, 73.064535),new LatLng(33.661329, 73.063974),new LatLng(33.672490, 73.055906),new LatLng(33.683642, 73.047215),new LatLng(33.689706, 73.030363),new LatLng(33.680982, 73.018654),new LatLng(33.671293, 73.016894),
                //gpo 1
                new LatLng(33.595215, 73.051496),new LatLng(33.593119, 73.054184),new LatLng(33.585280, 73.066763),new LatLng(33.588925, 73.076172),new LatLng(33.599117, 73.080001),new LatLng(33.607101, 73.083641),new LatLng(33.626583, 73.075027),
                //new LatLng(33.630072, 73.071996), //duplicate center
                new LatLng(33.631550, 73.072534),new LatLng(33.639063, 73.075742),new LatLng(33.643424, 73.077372),new LatLng(33.650480, 73.080152),new LatLng(33.663188, 73.085446),new LatLng(33.696970, 73.062966),new LatLng(33.699527, 73.073920),new LatLng(33.704257, 73.082993),new LatLng(33.707380, 73.088906),new LatLng(33.717143, 73.082961), new LatLng(33.718617, 73.084589), new LatLng(33.720660, 73.083891), new LatLng(33.727328, 73.073823), new LatLng(33.720397, 73.058392), new LatLng(33.733174, 73.087104)

                ));
        return allPoints;
    }

}
MainActivity:中的getOverAllRoute()方法,该方法将源位置与RoutedData类返回的所有LatLngs进行比较,并将它们存储在列表srcLocDisList中。我面临的所有问题都是在第一个循环中,即计算距离,然后将距离和位置添加到srcDistList中,但每次添加新对象时,它都会用新添加的对象覆盖所有以前的对象

public void getOverAllRoute(){
        //to get main route points to measure distance from
        RoutesData rD = new RoutesData();
        ArrayList<LatLng> mainRoutePoints = rD.allRoutesMainStops();
        //Toast.makeText(this,"Size: "+mainRoutePoints.size(), Toast.LENGTH_LONG).show();
        //to store location + distances from source
        LocationDistances srcLocDis = new LocationDistances(); 
        ArrayList<LocationDistances> srcLocDisList = new ArrayList();
        //showMarkerslongLat();
        //create source Location
        Location srcLoc = new Location("");
        srcLoc.setLatitude(sll.latitude);
        srcLoc.setLongitude(sll.longitude);

        // to compare distances from source location
        Location mainPointsLoc = new Location("");
        for(int i =0;i<mainRoutePoints.size();i++){

            mainPointsLoc.setLatitude(mainRoutePoints.get(i).latitude);
            mainPointsLoc.setLongitude(mainRoutePoints.get(i).longitude);
            //store distances and location in arraylist
            srcLocDis.locs = mainRoutePoints.get(i);
            srcLocDis.distances = srcLoc.distanceTo(mainPointsLoc);



            srcLocDisList.add(srcLocDis);
            Log.d("Location data: ",srcLocDis.locs.toString());
            Log.d("Saved Data: ",srcLocDisList.get(i).toString());

        }
        //Toast.makeText(this,"items1: "+srcLocDisList.size(), Toast.LENGTH_LONG).show();
        LocationDistances min=null;
        for(LocationDistances x:srcLocDisList){
            String srcLocDisLocFile = x.locs.latitude+" "+x.locs.longitude+" distances:"+x.distances;


            min=(min==null||x.distances<min.distances)?x:min;
            Log.d("LocDist:",Double.toString(x.distances));

        }
        LatLng srcStartMin=min.locs;
        Toast.makeText(this,srcStartMin.latitude+" "+srcStartMin.longitude+" Distance"+Double.toString(min.distances), Toast.LENGTH_LONG).show();

    }
public void getOverAllRoute(){
//获取主要路线点以测量距离
RoutesData rD=新的RoutesData();
ArrayList mainRoutePoints=rD.AllRouteMainStops();
//Toast.makeText(这个,“大小:+mainRoutePoints.Size(),Toast.LENGTH\u LONG.show();
//存储位置+与源的距离
LocationDistances srcLocDis=新的LocationDistances();
ArrayList srcLocDisList=新的ArrayList();
//showMarkerslongLat();
//创建源位置
位置srcLoc=新位置(“”);
srcLoc.设置纬度(sll.纬度);
srcLoc.设置经度(sll.经度);
//比较与源位置的距离
位置mainPointsLoc=新位置(“”);

对于(int i=0;iPut
LocationDistances srcLocDis=new LocationDistances();
在循环内,否则您总是更改同一对象

for(int i =0;i<mainRoutePoints.size();i++){ 
  LocationDistances srcLocDis = new LocationDistances();
   ....
}

for(int i=0;iPut
locationdistance srcLocDis=new locationdistance();
在循环中,否则您总是在更改同一对象

for(int i =0;i<mainRoutePoints.size();i++){ 
  LocationDistances srcLocDis = new LocationDistances();
   ....
}

用于(int i=0;i你的代码创建了一个新数组。然后发生了什么?抱歉@Alex我编辑了我的代码。你的代码创建了一个新数组。然后发生了什么?抱歉@Alex我编辑了我的代码。感谢这个解决方案对我有效,但在一次迭代后的第二个循环中,我在列表a中检查最小距离值,现在面临另一个问题nd从ArrayList中选择该对象,我的应用程序崩溃,调试时出现错误“找不到源”是的,我是在等待响应。Thanx感谢这个解决方案对我有效,但在一次迭代后的第二个循环中,我遇到了另一个问题,我检查列表中的最小距离值并从ArrayList中选择该对象,我的应用程序崩溃,调试时出现错误“Source not found”是的,我是在等待答复