您的位置:首页 > 编程语言 > C#

C# 根据经度纬度计算两点的距离

2011-01-10 17:48 260 查看
public class Earth
{
/// <summary>
/// 地球的半径
/// </summary>
public const double EARTH_RADIUS = 6378.137;

/// <summary>
/// 计算坐标点的距离
/// </summary>
/// <param name="begin">开始的经度纬度</param>
/// <param name="end">结束的经度纬度</param>
/// <returns>距离(公里)</returns>
public static double GetDistance(Point begin, Point end)
{
double lat = begin.RadLat - end.RadLat;
double lng = begin.RadLng - end.RadLng;

double dis = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(lat / 2), 2) + Math.Cos(begin.RadLat) * Math.Cos(end.RadLat) * Math.Pow(Math.Sin(lng / 2), 2)));
dis = dis * EARTH_RADIUS;
dis = Math.Round(dis * 1e4) / 1e4;

return dis;
}
}

/// <summary>
/// 代表经度, 纬度
/// </summary>
public class Point
{
/// <param name="lat">纬度 X</param>
/// <param name="lng">经度 Y</param>
public Point(double lat, double lng)
{
this.lat = lat;
this.lng = lng;
}

// 纬度 X
private double lat;

// 经度 Y
private double lng;

/// <summary>
/// 代表纬度 X轴
/// </summary>
public double Lat { set; get; }

/// <summary>
/// 代表经度 Y轴
/// </summary>
public double Lng { get; set; }

public double RadLat { get { return lat * Math.PI / 180; } }

public double RadLng { get { return lng * Math.PI / 180; } }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: