如何按纬度和经度升序排列距离

时间:2019-05-05 11:54:55

标签: android sorting arraylist

这里我是通过脚本从服务器上下载地点数据的,现在我想使用毕达哥拉斯按距离的升序对select s.value as Parent, tb2.lastlevel into ##tmp_getAllLastLevel from [DWH-INF].[center].[dbo].[IFIRView_NeginTitleTotal] tb2 join dbo.Split(',', @value) s on s.value in (tb2.lastlevel, tb2.level1, tb2.level2, tb2.level3, tb2.level4, tb2.level5, tb2.level6, tb2.level7, tb2.level8); 的列表进行排序

Place

2 个答案:

答案 0 :(得分:1)

您可以像这样

Collections.sort(pl, new Comparator<Place>() {
    public int compare(Place pl1, Place pl2) {
        // Write your logic here.
        return Math.sqrt(pl1.longitude * pl1.longitude + pl1.latitude * pl1.latitude) < 
            Math.sqrt(pl2.longitude * pl2.longitude + pl2.latitude * pl2.latitude);
    }});

答案 1 :(得分:0)

您可以使用hypot()返回距java.lang.Math类2点的距离:

Collections.sort(pl, new Comparator<Place>() {
    public int compare(Place pl1, Place pl2) {
        Double d1 = Math.hypot(Double.parseDouble(p1.getLongitude()), Double.parseDouble(p1.getLatitude()));
        Double d2 = Math.hypot(Double.parseDouble(p2.getLongitude()), Double.parseDouble(p2.getLatitude()));
        return  d1.compareTo(d2);
    }
});