正如标题所示,我正在尝试对从 kml 文件加载的一些地标进行排序。我希望它们按到当前位置的距离排序。
问题是我的地标没有按预期排序。当我在地图上查看它们时,我可以看到它们显然没有按应有的方式排序。
我的 Placemark 类的相关部分如下所示。
public class Placemark {
    ...
    public double distanceTo(double lat, double lon)
    {
      return Math.sqrt(Math.pow(lat - this.lat, 2) + Math.pow(lon - this.lon, 2));
    }
    private String name;
    private String description;
    private double lat;
    private double lon;
}
我使用 PlacemarkComparator 在我的 PlacemarkLoader 中进行排序,其相关部分如下所示。
@Override
public List<Placemark> loadInBackground() {
  List<Placemark> data = getPlacemarks(MainActivity.path);
  Collections.sort(data, new PlacemarkComparator(location.getLatitude(), location.getLongitude()));
  return data;
}
private static class PlacemarkComparator implements Comparator<Placemark> {
  private double lat;
  private double lon;
  public PlacemarkComparator(double lat, double lon)
  {
      this.lat = lat;
      this.lon = lon;
  }
  @Override
  public int compare(final Placemark pm, final Placemark pm2) {
    if(pm.distanceTo(lat, lon) < pm2.distanceTo(lat, lon))
    {
      return -1;
    }
    else if(pm.distanceTo(lat, lon) > pm2.distanceTo(lat, lon))
    {
      return 1;
    }
    else
    {
      return 0;
    }
  }
}
关于我哪里出错的任何建议?请让我知道我是否应该发布更多代码或其他任何内容。