La fórmula Haversine es una herramienta matemática utilizada para calcular la distancia entre dos puntos en la superficie de una esfera, como la Tierra, de los que conocemos su longitud y latitud. Este método es esencial en aplicaciones de geolocalización y navegación GPS. En este artículo de Viafirma, exploraremos cómo implementar esta fórmula en Java, proporcionando ejemplos prácticos y código listo para usar.
Cómo implementar la Fórmula Haversine en Java
private static int calculateDistanceByHaversineFormula(double lon1, double lat1, double lon2, double lat2) {
double earthRadius = 6371; // km
s(lat1);
lon1 = Math.toRadians(lon1);
lat2 = Math.toRadians(lat2);
lon2 = Math.toRadians(lon2);
double dlon = (lon2 - lon1);
double dlat = (lat2 - lat1);
double sinlat = Math.sin(dlat / 2);
double sinlon = Math.sin(dlon / 2);
double a = (sinlat * sinlat) + Math.cos(lat1)*Math.cos(lat2)*(sinlon*sinlon);
double c = 2 * Math.asin (Math.min(1.0, Math.sqrt(a)));
double distanceInMeters = earthRadius * c * 1000;
return (int) distanceInMeters;
}
En nuestro caso ha sido utilizado para evaluar la distancia a un establecimiento determinado desde nuestra posición actual (calculada mediante GPS).