2009-02-10 13 views
13

Mam problem z obliczaniem odległości za pomocą metody Location.distanceTo.Android: Location.distanceAby nie działać poprawnie?

private class MyLocationOverlay1 extends MyLocationOverlay { 
    @Override 
    public void drawMyLocation(Canvas canvas, MapView mapView, Location lastFix, GeoPoint myLocation, long when) 
     super.drawMyLocation(canvas,mapView,lastFix,myLocation,when); 

     Location bLocation = new Location("reverseGeocoded"); 
     bLocation.setLatitude(FindList.gpslat);   // Value = 3.294391E7 
     bLocation.setLongitude(FindList.gpslong);   // Value = -9.6564615E7 
     Location aLocation = new Location("reverseGeocoded"); 
     aLocation.setLatitude(myLocation.getLatitudeE6()); // Value = 3.2946164E7 
     aLocation.setLongitude(myLocation.getLongitudeE6()); // Value = -9.6505141E7 
     aLocation.set(aLocation); // Don't think I need this 
     bLocation.set(bLocation); // Don't think I need this either 

     int distance = (int)aLocation.distanceTo(bLocation); // Value = 12637795 ??? 
     String str = " (" + String.valueOf(distance) + " meters)"; 
    } 
} 

Czy ktoś może powiedzieć, dlaczego moje obliczenie odległości pokazuje 12 637 795 metrów?

Odpowiedz

14

należy zmodyfikować linie:

aLocation.setLatitude(myLocation.getLatitudeE6()/1e6); 
aLocation.setLongitude(myLocation.getLongitudeE6()/1e6); 

i usunąć linie:

aLocation.set(aLocation); 
bLocation.set(bLocation); 
+0

Dziękuję Wygląda miałem pewne problemy na niektórych innych rzeczy (reverse geokodowanie), który został z powodu to. – Chrispix

Powiązane problemy