2017-05-29 5 views
-1

Ich habe ein Problem über den Standort, mein Programm speichert App-Standort in Firebase-Datenbank, es ist in Ordnung, ich muss meinen Standort mit den Standorten in der Datenbank vergleichen, ich habe userData Objekt verwendet, um Koordinaten zu speichern es:Ich kann keine Entfernung zwischen zwei Punkten finden

Location dbLocation = new Location("dbLocation"); 
dbLocation.setLatitude(userData.lat); 
dbLocation.setLongitude(userData.lng); 

und ich meine Lage von GPSTracker Service-Koordinaten:

Location crntLocation = new Location("crntLocation"); 
crntLocation.setLongitude(gpstracker.getLongitude()); 
crntLocation.setLatitude(gpstracker.getLatitude()); 

ich diese Koordinaten vergleichen müssen und finden Entfernung zwischen zwei Orten

float distanceBetween = crntLocation.distanceTo(dbLocation); 

aber es funktioniert nicht, ich weiß nicht warum, bitte können Sie helfen, es zu beheben?

+0

Welchen Wert u hilft erhalten in 'distanceBetween'? – tahsinRupam

+0

Haben Sie die 'distanceBetween' Methode ausprobiert? https://developer.android.com/reference/android/location/Location.html#distanceBetween%28double,%20double,%20double,%20double,%20float%5B%5D%29 –

+0

Mögliches Duplikat von [Android Abstand zwischen zwei Punkte] (https://stackoverflow.com/questions/11534323/android-distance-between-two-points) –

Antwort

0

Nach Ort erhalten, die aktuellen Lat, Lon ist, kann man einfach den Abstand überprüfen von Ursprungspunkte (lat, Lon)

float[] results = new float[1]; 
Location.distanceBetween(currentlatitude, currentlongitude, originLat, originLon, results); 
float distanceInMeters = results[0]; 
0

Ich hoffe, das

public static double distance(Location start, Location end) { 
    try { 
     double distance = start.distanceTo(end); 
     DecimalFormat decimalFormat = new DecimalFormat("#.#"); 
     DecimalFormatSymbols custom = new DecimalFormatSymbols(); 
     custom.setDecimalSeparator('.'); 
     decimalFormat.setDecimalFormatSymbols(custom); 
     double distanceFormated = 
     Double.parseDouble(decimalFormat.format(distance)); 
     return distanceFormated; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return 0; 
} 
Verwandte Themen