按照lati和long排序地图

时间:2015-05-16 04:10:04

标签: java android sorting latitude-longitude

我有Map<String, Page>个数据,我有data.getlatdata.getlog。在listview中,我显示了这些数据。我希望这些数据应该按照最近的lat long 1加载。知道如何排序这个

String s = "some data "
Listpojo ps = CoreGsonUtils.fromJson(s, Listpojo.class);

在ps中,我拥有所有价值观。在ps我有数据模型有lat,所以我访问它像:

ps.data.getlat();

pl让我们知道如何排序

1 个答案:

答案 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);

使用当前位置循环遍历每个可用位置后,您可以获得从当前位置到每个可用位置的距离。所以最近的位置将是最低距离。