2009-02-10 13 views
13

Ho riscontrato un problema nel calcolo della distanza utilizzando il metodo Location.distanceTo.Android: Location.distancePer non funziona correttamente?

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)"; 
    } 
} 

Qualcuno può dire perché il mio calcolo della distanza mostra 12,637,795 Metri?

risposta

14
linee

è necessario modificare:

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

e rimuovere le righe:

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

Grazie, Sembra che ho avuto alcuni problemi su alcune altre cose (geocoding inverso) che è stato a causa di Questo. – Chrispix

Problemi correlati