2009-02-10 40 views
13

Tengo un problema al calcular la distancia usando el método Location.distanceTo.Android: Location.distanceTo no funciona correctamente?

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

¿Puede alguien decirme por qué mi cálculo de distancia muestra 12,637,795 metros?

Respuesta

14

debe modificar líneas:

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

y quitar las líneas:

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

Gracias, Parece que he tenido algunos problemas en algunas otras cosas (geocodificación inversa) que ha sido causa de esta. – Chrispix

Cuestiones relacionadas