2011-12-18 15 views
5

Duplicar posibles:
How to calculate distance between two locations using their longitude and latitude valueAndroid distancia calcular entre dos ubicaciones

Antes de todo me da un poco de educación sobre cómo la Tierra no es una esfera perfecta y todo cambia cuando recibe más cerca de los polos, que parece ser todo lo que puedo encontrar en la red. Y antes de preguntarle a mi padre quién es un geógrafo consumado y a mi tío, que es un físico cuántico que trabaja para la NASA y que yo soy un humilde programador de computadoras, ¡quisiera preguntarles primero a ustedes!

Solo necesito un parque de bolas Km de distancia en línea recta desde un teléfono a una lista de lugares poblados previamente para un área de 720 kilómetros cuadrados, por lo que las variaciones no son importantes.

Este soy yo ahora, por favor no me deje nada.

mLatitude=-38.3533177 
mLongitude=144.9127674 

Y este soy yo hace diez minutos aproximadamente 3 km de distancia en línea recta,

mLatitude=-38.3444385 
mLongitude=144.9374762 

¿Cómo calculo que para obtener 3 kilometros?

Soy bastante nuevo en Java, así que no estoy seguro de qué funciones matemáticas integradas están disponibles y no tengo idea de qué es el cálculo.

Cheers,

Mike.

+0

He pedido pregunta smilliar, mira esto: http://stackoverflow.com/questions/8286771/list-events-on-defined-area-using-google-maps – PiKey

+0

ver esta respuesta: http://stackoverflow.com/a/8410867/265167 –

Respuesta

27

Puede utilizar el método distanceTo() de la clase Location para obtener la distancia entre dos ubicaciones locales.

+0

DistanceTo() y DistanceBetween() son un tanto elusivos, si los tipeo en una búsqueda obtengo resultados para ecuaciones matemáticas que hacen lo que usted pensaría que están construidas en funciones debería hacer. Ellos como Nostras han dicho que todos tienen un radio de tierra ligeramente diferente, pero para mí solo necesito un parque de béisbol. –

+0

OK, ¿estás diciendo que no sabes cómo usar este método? – anujprashar

4
public class Calculator { 
    private static final int earthRadius = 6371; 
    public static float calculateDistance(float lat1, float lon1, float lat2, float lon2) 
    { 
     float dLat = (float) Math.toRadians(lat2 - lat1); 
     float dLon = (float) Math.toRadians(lon2 - lon1); 
     float a = 
       (float) (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)); 
     float c = (float) (2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))); 
     float d = earthRadius * c; 
     return d; 
    } 
} 
+0

¿Podría decirme cuál es la unidad del resultado de esta función? No parece devolver el km correcto? –

+0

Parece que la función devuelve la distancia en kilómetros. – NOSTRA

Cuestiones relacionadas