Java 按到当前GPS位置的距离对GPS位置集合进行排序
给定一组具有经度和纬度的位置对象,如何根据每个位置到当前位置对象的距离对该列表进行排序 我有一种方法可以计算两个定位对象之间的距离(以米为单位)Java 按到当前GPS位置的距离对GPS位置集合进行排序,java,arraylist,collections,gps,Java,Arraylist,Collections,Gps,给定一组具有经度和纬度的位置对象,如何根据每个位置到当前位置对象的距离对该列表进行排序 我有一种方法可以计算两个定位对象之间的距离(以米为单位) Collections.Sort()在这里合适吗?是的,您可以编写一个比较器: static final Location origin; public class LocationComparator implements Comparator { @Override public int compare(Location o1, Loca
Collections.Sort()在这里合适吗?是的,您可以编写一个比较器:
static final Location origin;
public class LocationComparator implements Comparator {
@Override
public int compare(Location o1, Location o2) {
return Doubles.compare(distance(o1.lat, origin.lat, o1.lon, origin.lon, 0, 0),
distance(o2.lat, origin.lat, o2.lon, origin.lon, 0, 0));
}
}
其中距离如中所定义。这将根据两个点与原点的距离进行比较
然后,您可以通过调用以下命令进行排序:
Collections.sort(latLonCollection, new LocationComparator());
是的,您可以编写比较器:
static final Location origin;
public class LocationComparator implements Comparator {
@Override
public int compare(Location o1, Location o2) {
return Doubles.compare(distance(o1.lat, origin.lat, o1.lon, origin.lon, 0, 0),
distance(o2.lat, origin.lat, o2.lon, origin.lon, 0, 0));
}
}
其中距离如中所定义。这将根据两个点与原点的距离进行比较
然后,您可以通过调用以下命令进行排序:
Collections.sort(latLonCollection, new LocationComparator());
这是对Benjy答案的更新,除了使用Location
类的内置函数。它已被隔离,以将原点作为构造函数的一部分
public class LocationComparator implements Comparator<Location>
{
Location origin;
LocationComparator(Location origin){
this.origin= origin;
}
public int compare(Location left, Location right) {
return Float.compare(origin.distanceTo(left), origin.distanceTo(right));
}
}
这是对Benjy答案的更新,除了使用Location
类的内置函数。它已被隔离,以将原点作为构造函数的一部分
public class LocationComparator implements Comparator<Location>
{
Location origin;
LocationComparator(Location origin){
this.origin= origin;
}
public int compare(Location left, Location right) {
return Float.compare(origin.distanceTo(left), origin.distanceTo(right));
}
}
你能简单地解释一下你在你的compare()
中做了什么吗?我加了一句话。基本上是根据两点与原点的距离来比较两点。哦,很抱歉错过了distance()
。非常感谢。我喜欢这种方法,因为我不必遍历设置每个位置原点的列表。它只是在比较器中设置的。简单。你能简单地解释一下你在你的compare()
中做了什么吗。我加了一句话。基本上是根据两点与原点的距离来比较两点。哦,很抱歉错过了distance()
。非常感谢。我喜欢这种方法,因为我不必遍历设置每个位置原点的列表。它只是在比较器中设置的。简单。