2015-05-16 2 views
-4

у меня есть Map<String, Page> данные у меня есть data.getlat и data.getlog. И в listview я показываю эти данные. Я хочу, чтобы эти данные загружались в соответствии с ближайшим латским длинным 1-м. Любая идея, как я могу сортировать этосортировать карту по латам и длинным

String s = "some data " 
Listpojo ps = CoreGsonUtils.fromJson(s, Listpojo.class); 

В ps У меня есть все значения. В псе у меня есть модели данных, которые имеют широты, поэтому я доступ к ней нравится:

ps.data.getlat(); 

пл дайте знать, как сортировать

ответ

0

Если вы хотите, чтобы найти ближайшее место, вы должны найти расстояние между текущее местоположение и доступные места.

Предположим, вы находитесь в ГЕРМАНИИ. и Доступные местоположения - ИНДИЯ и США. Теперь у вас должны быть координаты этих трех местоположений.

Вы можете вычислить расстояние от 2lon и 2lat ниже класса.

public class GeoHelper { 

    public static String getDistance(double lat1, double lon1, double lat2, double lon2) { 

     double theta = lon1 - lon2; 
     double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta)); 
     dist = Math.acos(dist); 
     dist = rad2deg(dist); 
     dist = dist * 60 * 1.1515; 
     dist = dist * 1.609344; 
     return (String.valueOf(dist)); 
    } 

    /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ 
    /*:: This function converts decimal degrees to radians    :*/ 
    /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ 
    private static double deg2rad(double deg) { 
     return (deg * Math.PI/180.0); 
    } 

    /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ 
    /*:: This function converts radians to decimal degrees    :*/ 
    /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ 
    private static double rad2deg(double rad) { 
     return (rad * 180/Math.PI); 
    } 
} 

Пусть координаты Германии 5,0 лата, 3,5 и долгота корды Индии 3.5Lat, 6,5 Lon.

Так расстояние можно найти как этого

String distance = GeoHelper.getDistance(5.0,3.5,3.5,6.5); 

После цикла через каждую свободную ячейку с текущим местоположением, как это, вы могли бы получить расстояние от текущего местоположения до каждого доступного места. Таким образом, ближайшее место будет самым низким.

+0

Как я могу сделать это в hap, доступ к которому осуществляется в списке, и у меня есть n число латов – user4759076

+0

wot? wot является 'hap'? – theapache64

+0

map typo .. так что у меня есть список 100 нет, то как я могу сортировать его – user4759076

Смежные вопросы