CALCULAR DISTANCIA ENTRE 2 COORDENADAS La fórmula Haversine se usa para calcular la distancia. La fórmula Haversine cuenta para la curvatura de la tierra, pero supone una tierra esférica en lugar de un elipsoide. Para largas distancias, la fórmula Haversine introduce un error inferior al 0,1 por ciento. La altitud no se utiliza para calcular la distancia. 1.- Método 1: javascript Esto usa la fórmula 'haversine' para calcular la distancia del círculo máximo entre dos puntos, es decir, la distancia más corta sobre la superficie de la tierra, dando una distancia en línea recta entre los puntos var var var var lat1 lon1 lat2 lon2 const const const const φ1 φ2 Δφ Δλ = = = = -17.784092733733377; -63.172350311790964; -17.785518788230085; -63.1888422332491; = = = = lat1 * Math.PI / 180; // φ, λ in radians lat2 * Math.PI / 180; (lat2 - lat1) * Math.PI / 180; (lon2 - lon1) * Math.PI / 180; const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2); const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); const d = R * c; // in metres distancia 1753.36 m 1.753 km 2. Método 2: mediante c# public const double EarthRadius = 6371; double distance = 0; double Lat = (point2.Latitude - point1.Latitude) * (Math.PI / 180); double Lon = (point2.Longitude - point1.Longitude) * (Math.PI / 180); double a = Math.Sin(Lat / 2) * Math.Sin(Lat / 2) + Math.Cos(point1.Latitude * (Math.PI / 180)) * Math.Cos(point2.Latitude * (Math.PI / 180)) * Math.Sin(Lon / 2) * Math.Sin(Lon / 2); double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a)); distance = EarthRadius * c; return distance; distancia 1.753 km 3. Método 3: mediante la clase GeoCoordinate c# double lat1 = -17.784092733733377; double lon1 = -63.172350311790964; double lat2 = -17.785518788230085; double lon2 = -63.1888422332491; GeoCoordinate c1 = new GeoCoordinate(lat1, lon1); GeoCoordinate c2 = new GeoCoordinate(lat2, lon2); double distancia = c1.GetDistanceTo(c2); distancia 1754.87 m