public class MathFx { /// <summary> /// Devuelve en radianas el valor recibido /// </summary> /// <param name=value">Valor a pasar a radianes</param>" /// <returns>Radianes</returns> public static double toRad(double value) { return value * Math.PI / 180; } /// <summary> /// Devuelve distancia en metros entre dos coordenadas /// </summary> /// <param name=lat1">Latitud de la primera coordenada</param>" /// <param name=lng1">Longitud de la primera coordenada</param>" /// <param name=lat2">Latitud de la segunda coordenada</param>" /// <param name=lng2">Longitud de la segunda coordenada</param>" /// <returns>Distancia en metros</returns> public static double distanceBetween(double lat1, double lng1, double lat2, double lng2) { double a; double b; double r = 6371 * 1000; // Radio de la tierra para obtener metros double dLat = toRad(lat2 - lat1); double dLng = toRad(lng2 - lng1); a = Math.Pow(Math.Sin(dLat / 2), 2) + ( Math.Pow(Math.Cos(toRad(lat2)), 2) * Math.Pow(Math.Sin(dLng / 2), 2) ); b = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a)); return r * b; } }