Найти ближайшее место среди мест из нашего местоположения
Я разрабатываю приложение для Android.
Я получаю список широт и долгот с сервера.
Я должен расположить эти значения в зависимости от моего местоположения. Я имею в виду первую широту / долготу, а затем следующую и т. Д.
У меня есть широта и долгота и список широты и долготы. Как я могу найти ближайший?
3 ответа
Решение
Это может быть не лучшим способом, но это работает:)
public static final double PI = 3.14159265;
public static final double deg2radians = PI/180.0;
public static final double miles = 0.000621371192;
public static final double kms = 0.001;
public static double getDistance(double latitude1, double longitude1, double latitude2,double longitude2) {
double distance;
Location locationA = new Location("point A");
locationA.setLatitude(latitude1);
locationA.setLongitude(longitude1);
Location locationB = new Location("point B");
locationB.setLatitude(latitude2);
locationB.setLongitude(longitude2);
distance = locationA.distanceTo(locationB);
double radd = distance * kms;
return radd;
}
Псевдокод:
location.distanceTo (locFromServer); и для сортировки Colection.sort(listOfLocations; новый Comparator(){ сравнить с(){ // location.distanceTo(locFromServer) } }
Вы можете просто рассчитать расстояния от позиции пользователя до загруженных местоположений и выбрать наименьшее.
Посмотрите здесь: более быстрый способ расчета географического расстояния между двумя точками.