Anda di halaman 1dari 3

Cmo calcular distancias en Android

Frmula de Haversine

public static int getDistance(int lat_a,int lng_a, int lat_b, int lon_b){ Radius = 6371000; //Radio de la tierra double lat1 = lat_a / 1E6; double lat2 = lat_b / 1E6; double lon1 = lng_a / 1E6; double lon2 = lon_b / 1E6; double dLat = Math.toRadians(lat2-lat1); double dLon = Math.toRadians(lon2-lon1); double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.sin(dLon /2) * Math.sin(dLon/2); double c = 2 * Math.asin(Math.sqrt(a)); return (int) (Radius * c); }

Formatear un poco la distancia en funcin de la magnitud, ya que, aunque sea lo mismo decir que estoy a 2 kilmetros que a 2.000 metros, al usuario final le hacemos pensar para hacer la conversin. Yo me he hecho una pequea funcin, la cual le paso la distancia en metros, y si es mayor de un kilmetro me devuelve el resultado en kilmetros y si no en metros.

public static String Distance(int distance){ if(distance >= 1000){ int k = distance / 1000; int m = distance - (k*1000); m = m / 100; return String.valueOf(k) + (m>0?("."+String.valueOf(m)):"") + " Km" +(k>1?"s":""); } else { return String.valueOf(distance) + " metro"+(distance==1?"":"s"); } }

public float distanceTo (Location dest)

Returns the approximate distance in meters between this location and the given location. Distance is defined using the WGS84 ellipsoid.

El WGS84 es un sistema de coordenadas geogrficas mundial que permite localizar cualquier punto de la necesitar otro de referencia) por medio de tres unidades dadas. WGS84 son las siglas en ingls de World Geodetic System 84 (que significa Sistema Geodsico Mundial 1984).

Tierra (sin

Se trata de un estndar en geodesia, cartografa, y navegacin, que data de 1984. Tuvo varias revisiones (la ltima en 2004), y se considera vlido hasta una prxima reunin (an no definida en la pgina web oficial de la Agencia de Inteligencia Geoespacial). Se estima un error de clculo menor a 2 cm. por lo que es en la que se basa el Sistema de Posicionamiento Global (GPS). Consiste en un patrn matemtico de tres dimensiones que representa la tierra por medio de un elipsoide, un cuerpo geomtrico ms regular que la Tierra, que se denomina WGS 84 (ntese el espacio). El estudio de este y otros modelos que buscan representar la Tierra se llama Geodesia. Coordenadas cartesianas Por una cuestin de practicidad, proyectamos este sistema de coordenadas geodsicas (expresados en grados, minutos, segundos) a algn otro sistema de coordenadas cartesiano (pasar de un modelo 3D a uno 2D) llamados sistema de proyeccin tpicamente UTM que se expresan en metros (en orden a su relacin a un punto de origen arbitrario) que facilita clculos de distancia y superficie.

Parmetros
Semieje Mayor a: 6,378,137.0 m Semieje Menor b: 6,356,752.3142 m Achatamiento f: 1/298.257223563 Producto de la Constante Gravitacional (G) y la Masa de la Tierra (M): GM = 3.986004418x10 Velocidad Angular de la Tierra : 7.292115x10 rad/s
-5 14

m /s

Anda mungkin juga menyukai