我有来自 GPS 的位置(lon_base,lat_base)。 我有一个位置列表(lon1、lat1|lon2、lat2|lon3、lat3...) 这个名单很长,遍布世界各地。
我的问题是: 1. 如何从该列表中仅获取距我的 lon_base\lat_base 1 英里的 lon\lat? 2. 如何将它们从近到远排序?
提前致谢!
最佳答案
public static List<Location> sortLocations(List<Location> locations, final double myLatitude,final double myLongitude) {
Comparator comp = new Comparator<Location>() {
@Override
public int compare(Location o, Location o2) {
float[] result1 = new float[3];
android.location.Location.distanceBetween(myLatitude, myLongitude, o.Lat, o.Long, result1);
Float distance1 = result1[0];
float[] result2 = new float[3];
android.location.Location.distanceBetween(myLatitude, myLongitude, o2.Lat, o2.Long, result2);
Float distance2 = result2[0];
return distance1.compareTo(distance2);
}
};
Collections.sort(locations, comp);
return locations;
}
位置列表是包含您自己的位置类的列表,而不是 android.location.Location。
关于android - 对 lon\lat 点列表进行排序,从最近的开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5396286/