2010-12-28 3 views
0

Я использую LocationManager для получения значений Широта и долготы пользователя. Эти значения регулярно обновляются в базе данных.Как рассчитать расстояние с помощью координат от LocationManager

Теперь я хочу узнать расстояние между двумя пользователями, основываясь на сохраненных значениях Широта и Долгота. Я хочу показать сообщение, когда расстояние между двумя пользователями меньше (скажем, 100 метров). Кто-нибудь может посоветовать мне учебник или примерный пример того, как его достичь.

ответ

1

Вы можете ознакомиться с классом Location. Вы можете установить широту и долготу и есть метод distanceTo, что вы можете использовать

+0

Спасибо за ответ ... Я также нашел здесь функцию (http://android.voxisland.com/code_examples/How_to_calculate_the_distance_between_two_GPS_coordinates.rhtml) ... Я использую оба и узнаю, какая из них может дать лучшую точность. –

0

Ou Pode utilizar Эсте Metodo дие ес desenvolvi ... Или вы можете использовать этот метод, я разработал ...

public static Double distance(latitudeA, latitudeB, longitudeA, longitudeB) { 
     double radius = 3958.75; 
     double dlat = ToRadians(Double.parseDouble(String.valueOf(latitudeB)) 
       - Double.parseDouble(String.valueOf(latitudeA))); 
     double dlon = ToRadians(Double.parseDouble(String.valueOf(longitudeB)) 
       - Double.parseDouble(String.valueOf(longitudeA))); 
     double a = Math.sin(dlat/2) 
       * Math.sin(dlat/2) 
       + Math.cos(ToRadians(Double.parseDouble(String.valueOf(latitudeA)))) 
       * Math.cos(ToRadians(Double.parseDouble(String.valueOf(latitudeB)))) * Math.sin(dlon/2) 
       * Math.sin(dlon/2); 
     double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); 
     Double d = radius * c; 
     double meterConversion = 1609.00; 
     return d * meterConversion; 
    } 

    private static double ToRadians(double degrees) { 
     double radians = degrees * 3.1415926535897932385/180; 
     return radians; 
    } 
+0

Math.toRadians (градусы) могут быть более точными. Не уверен –

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