Если вы хотите, чтобы найти ближайшее место, вы должны найти расстояние между текущее местоположение и доступные места.
Предположим, вы находитесь в ГЕРМАНИИ. и Доступные местоположения - ИНДИЯ и США. Теперь у вас должны быть координаты этих трех местоположений.
Вы можете вычислить расстояние от 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);
После цикла через каждую свободную ячейку с текущим местоположением, как это, вы могли бы получить расстояние от текущего местоположения до каждого доступного места. Таким образом, ближайшее место будет самым низким.
Как я могу сделать это в hap, доступ к которому осуществляется в списке, и у меня есть n число латов – user4759076
wot? wot является 'hap'? – theapache64
map typo .. так что у меня есть список 100 нет, то как я могу сортировать его – user4759076