que utiliza este código pero no funciona:¿Cómo puedo calcular la distancia entre dos puntos de GPS en Java?
necesitan la distancia entre dos coordenadas GPS como 41,1212, 11,2323 en kilómetros (Java)
double d2r = (180/Math.PI);
double distance = 0;
try{
double dlong = (endpoint.getLon() - startpoint.getLon()) * d2r;
double dlat = (endpoint.getLat() - startpoint.getLat()) * d2r;
double a =
Math.pow(Math.sin(dlat/2.0), 2)
+ Math.cos(startpoint.getLat() * d2r)
* Math.cos(endpoint.getLat() * d2r)
* Math.pow(Math.sin(dlong/2.0), 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double d = 6367 * c;
return d;
} catch(Exception e){
e.printStackTrace();
}
Su enfoque de trigonometría funcionaría muy bien si la Tierra fuera una esfera perfecta. Sin embargo, en realidad es un elipsoide, por lo que el radio desde la superficie hasta el núcleo de la Tierra es variable dependiendo de su posición en la tierra. Para obtener una medición de distancia precisa, necesita obtener una biblioteca de sistema de coordenadas que pueda dar cuenta de esto. Asumiendo que una esfera puede estar lo suficientemente cerca para lo que sea que estés haciendo, pero si necesitas que sea muy precisa, necesitarás encontrar una buena biblioteca. –
duplicado a partir de: [http://stackoverflow.com/questions/3694380/calculating-distance-between-two-points-using-latitude-longitude-what-am-i-doi][1] [1]: http://stackoverflow.com/questions/3694380/calculating-distance-between-two-points-using-latitude-longitude-what-am-i-doi – gonella