// 赤道半径
private const double EARTH_RADIUS = 6378137.0;
// 平均半径
//private const double EARTH_RADIUS = 6371004.0;
// 把角度变换为弧度
private double rad(double d)
{
return d * Math.PI / 180.0;
}
/// <summary>
/// 通过经纬度计算地球两点间的距离
/// </summary>
/// <param name="lat1">A点纬度</param>
/// <param name="lng1">A点经度</param>
/// <param name="lat2">B点纬度</param>
/// <param name="lng2">B点经度</param>
/// <returns>返回两点间的距离,单位公里</returns>
public double GetDistance(double lat1, double lng1, double lat2, double lng2)
{
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double b = rad(lng1) - rad(lng2);
double d = Math.Acos(Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Cos(b) + Math.Sin(radLat1) * Math.Sin(radLat2));
return d * EARTH_RADIUS; ;
}