using System; namespace POCDistance.Util { public static class CalculateDistance { static double toRadians( double angleIn10thofaDegree) { // Angle in 10th // of a degree return (angleIn10thofaDegree * Math.PI) / 180; } public static double GetDistance(double lat1, double lon1, double lat2, double lon2) { // The math module contains // a function named toRadians // which converts from degrees // to radians. lon1 = toRadians(lon1); lon2 = toRadians(lon2); lat1 = toRadians(lat1); lat2 = toRadians(lat2); // Haversine formula double dlon = lon2 - lon1; double dlat = lat2 - lat1; double a = Math.Pow(Math.Sin(dlat / 2), 2) + Math.Cos(lat1) * Math.Cos(lat2) * Math.Pow(Math.Sin(dlon / 2), 2); double c = 2 * Math.Asin(Math.Sqrt(a)); // Radius of earth in // kilometers. Use 3956 // for miles double r = 6371; // calculate the result return (c * r); } } }