public Distance GetDistanceTo(Position other)
{
var d1 = this.Latitude * (Math.PI / 180.0);
var num1 = this.Longitude * (Math.PI / 180.0);
var d2 = other.Latitude * (Math.PI / 180.0);
var num2 = other.Longitude * (Math.PI / 180.0) - num1;
var d3 = Math.Pow(Math.Sin((d2 - d1) / 2.0), 2.0) +
Math.Cos(d1) * Math.Cos(d2) * Math.Pow(Math.Sin(num2 / 2.0), 2.0);
var meters = 6376500.0 * (2.0 * Math.Atan2(Math.Sqrt(d3), Math.Sqrt(1.0 - d3)));
return Distance.FromMeters(meters);
}