public static int GetDistance(String location1, String location2) { // Haversine formula: // a = sin²(delta_lat/2) + cos(lat1).cos(lat2).sin²(delta_long/2) // c = 2.atan2(sqrt(a), sqrt(1-a)) // d = R.c // where R is earth’s radius (mean radius = 6,371km); // note that angles need to be in radians to pass to trig functions! double lat1, lon1, lat2, lon2, d_lat, d_lon, a1, a2, a3, a, c, distance; lat1 = GXGeolocation.GetLatitude(location1); lon1 = GXGeolocation.GetLongitude(location1); lat2 = GXGeolocation.GetLatitude(location2); lon2 = GXGeolocation.GetLongitude(location2); d_lat = GXGeolocation.DegreesToRadians(lat2 - lat1); d_lon = GXGeolocation.DegreesToRadians(lon2 - lon1); lat1 = GXGeolocation.DegreesToRadians(lat1); lat2 = GXGeolocation.DegreesToRadians(lat2); a1 = Math.Pow(Math.Sin(d_lat / 2), 2); a2 = Math.Pow(Math.Sin(d_lon / 2), 2); a3 = Math.Cos(lat1) * Math.Cos(lat2); a = a1 + a2 * a3; c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a)); distance = 6371 * c * 1000; return((int)distance); }