我有Map<String, Page>
个数据,我有data.getlat
和data.getlog
。在listview中,我显示了这些数据。我希望这些数据应该按照最近的lat long 1加载。知道如何排序这个
String s = "some data "
Listpojo ps = CoreGsonUtils.fromJson(s, Listpojo.class);
在ps中,我拥有所有价值观。在ps我有数据模型有lat,所以我访问它像:
ps.data.getlat();
pl让我们知道如何排序
答案 0 :(得分:0)
如果您想找到最近的位置,您应该找到当前位置与可用位置之间的距离。
假设你在德国。和可用的地点是印度和美国。 现在你应该有这三个位置的坐标。
您可以通过以下等级计算距离2lon和2lat的距离。
public class GeoHelper {
public static String getDistance(double lat1, double lon1, double lat2, double lon2) {
double theta = lon1 - lon2;
double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
dist = Math.acos(dist);
dist = rad2deg(dist);
dist = dist * 60 * 1.1515;
dist = dist * 1.609344;
return (String.valueOf(dist));
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
/*:: This function converts decimal degrees to radians :*/
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
private static double deg2rad(double deg) {
return (deg * Math.PI / 180.0);
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
/*:: This function converts radians to decimal degrees :*/
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
private static double rad2deg(double rad) {
return (rad * 180 / Math.PI);
}
}
假设德国的坐标为5.0 lat,3.5 lon,INDIA的绳索为3.5Lat,6.5 Lon。
所以距离可以像这样找到
String distance = GeoHelper.getDistance(5.0,3.5,3.5,6.5);
使用当前位置循环遍历每个可用位置后,您可以获得从当前位置到每个可用位置的距离。所以最近的位置将是最低距离。