Как видно из названия, я пытаюсь сортировать некоторые метки, которые я загружаю из файла kml. Я хочу, чтобы они отсортировались по расстоянию до текущего местоположения.Попытка сортировки некоторых меток из файла kml
Проблема в том, что мои метки не сортируются так, как они предполагают. Когда я смотрю на них на карте, я вижу, что они явно не отсортированы так, как должны быть.
Соответствующая часть моего класса метки помечена ниже.
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;
}
я сортировкой в моем PlacemarkLoader используя PlacemarkComparator из которых в соответствующей части показано ниже.
@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;
}
}
}
Любые предложения о том, где я ошибаюсь? Пожалуйста, дайте мне знать, если я должен написать больше кода или что-нибудь еще.
Пожалуйста, используйте *, не сортируются, как они предполагают * , Что не так с заказом? – OldCurmudgeon