【问题标题】:Sorting a List in Java from closest to furthest based of current location Android根据当前位置Android从最近到最远对Java中的列表进行排序
【发布时间】:2015-11-26 08:48:36
【问题描述】:

我已经复习了一些与我类似的问题,但没有任何运气。从我所见,我需要创建一个可比较的,但没有任何成功。这是我目前拥有的。

我能够成功获得 2 个提供我当前位置的双打。一个用于纬度,一个用于经度。

 double myCurrentLong;
 double myCurrentLat;

我需要排序的列表如下。

List<Locations> myLocations = locationLibrary.getLocations();

每个“myLocations”都包含一个纬度和一个经度。为了清楚起见,我得到了正确的数字,但在尝试对它们进行排序时遇到了问题。

感谢所有帮助。谢谢。

下面是我尝试通过首先获取距离来解决问题的尝试。为了测试,我在那里使用虚拟数据。

 /*private double getDistance(){
    Location locationA = new Location("point A");
    locationA.setLatitude(20.45);
    locationA.setLongitude(30.45);
    Location locationB = new Location("point B");
    locationB.setLatitude(GeoCacheLibrary.get(getActivity()).getLatitude());
    locationB.setLongitude(GeoCacheLibrary.get(getActivity()).getLongitude());
    float distance = locationA.distanceTo(locationB);
    return distance;
}*/

【问题讨论】:

  • 您的问题是“如何编写比较器?”或“如何正确获取两个位置之间的距离?”?
  • @Aron_dc 任何可以让我根据我拥有的东西从远处对列表进行排序的东西。我相信比较器是我需要让它工作的东西,但我不确定。

标签: java android list gps location


【解决方案1】:

我没有您的课程或安装的 Android SDK,因此请随时编辑我的帖子。基本的想法是这样的

double myCurrentLong;
double myCurrentLat;
//Fill those two variables somehow here
Location myCurrentLoc = new Location("My Current");
locationA.setLongitude(myCurrentLong);
myCurrentLoc.setLatitude(myCurrentLat);

List<Locations> myLocations = locationLibrary.getLocations();
Collections.sort(ls, new Comparator<Location>(){
  public int compare(Location l1, Location l2) {
    return l1.distanceTo(myCurrentLoc) - l2.distanceTo(myCurrentLoc);
  }
});

基本思想是使用您在匿名比较器中的当前位置,使用您计算的距离值来比较列表中的对象。

【讨论】:

    【解决方案2】:

    问题是您尝试对位置进行排序,但根据距离,两个位置之间有什么区别。 通过这种方式,您可以轻松地对距离进行排序,但不能对位置(从哪个位置到另一个位置)进行排序。 你可以尝试制作自己的课程,即。 Route (Location A, Location B) 和 List u 应该很容易按距离排序(比较方法中的计算距离),只需调用 sort 方法而不是集合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-08
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 2010-09-13
      • 1970-01-01
      • 2022-11-28
      相关资源
      最近更新 更多