2010-12-28 5 views
0

Ich verwende den LocationManager, um die Werte von Breite und Länge eines Benutzers abzurufen. Diese Werte werden regelmäßig in einer Datenbank aktualisiert.So berechnen Sie die Entfernung mithilfe von Koordinaten aus dem LocationManager

Nun möchte ich die Entfernung zwischen zwei Benutzern auf der Grundlage der gespeicherten Breiten- und Längengradwerte herausfinden. Ich möchte eine Nachricht anzeigen, wenn die Entfernung zwischen zwei Benutzern weniger als (z. B. 100 Meter) ist. Kann jemand bitte mich mit einem Tutorial oder einem Beispielcode führen, wie man es erreicht.

Antwort

1

Sie können sich die Klasse Location ansehen. Sie können die Länge und Breite festgelegt und es gibt eine distanceTo Methode, die Sie

+0

Danke für die Antwort ... Ich habe auch eine Funktion hier gefunden (http://android.voxisland.com/code_examples/How_to_calculate_the_distance_between_two_GPS_coordinates.rhtml) ... Ich werde beide verwenden und herausfinden, welche eine bessere Genauigkeit ergeben könnte. –

0

Ou pode utilizar este metodo que eu desenvolvi verwenden können ... Oder können Sie diese Methode verwenden, entwickelte ich ...

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 (Grad) könnte genauer sein. Nicht sicher –