下面是C#计算方法:
class Program
{
const double EARTH_RADIUS = 6378.137;
static void Main(string[] args)
{
double test = GetDistance(119.460594, 32.210855, 119.460594 + 0.011657, 32.210855 + 0.0042);
Console.ReadKey();
}
static double GetDistance(double AlongiDegrees, double AlatiDegrees, double BlongiDegrees, double BlatiDegrees)
{
double distance = -1.0d;
double AlongiRadians = (AlongiDegrees % 360) * Math.PI / 180.0d;
double AlatiRadians = (AlatiDegrees % 360) * Math.PI / 180.0d;
double BlongiRadians = (BlongiDegrees % 360) * Math.PI / 180.0d;
double BlatiRadians = (BlatiDegrees % 360) * Math.PI / 180.0d;
double a = AlatiRadians - BlatiRadians;
double b = AlongiRadians - BlongiRadians;
double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) + Math.Cos(AlatiRadians) * Math.Cos(BlatiRadians) * Math.Pow(Math.Sin(b / 2), 2)));
s = s * EARTH_RADIUS;
distance = Math.Round(s * 10000) / 10000;
return distance;
}
}