C# 获取两点(经纬度表示)间的距离
2015-03-13 14:28
387 查看
#region 获取两点(经纬度表示)间的距离
/// <summary>
/// 获取两点(经纬度表示)间的距离
/// </summary>
/// <param name="p1Lat">第一点纬度值</param>
/// <param name="p1Lng">第一点经度值</param>
/// <param name="p2Lat">第二点纬度值</param>
/// <param name="p2Lng">第二点经度值</param>
/// <returns></returns>
public static double GetDistance(double p1Lat, double p1Lng, double p2Lat, double p2Lng)
{
double dLat1InRad = p1Lat * (Math.PI / 180);
double dLong1InRad = p1Lng * (Math.PI / 180);
double dLat2InRad = p2Lat * (Math.PI / 180);
double dLong2InRad = p2Lng * (Math.PI / 180);
double dLongitude = dLong2InRad - dLong1InRad;
double dLatitude = dLat2InRad - dLat1InRad;
double a = Math.Pow(Math.Sin(dLatitude / 2), 2) + Math.Cos(dLat1InRad) * Math.Cos(dLat2InRad) * Math.Pow(Math.Sin(dLongitude / 2), 2);
double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
double dDistance = EarthRadiusKm * c;
return dDistance;
}
/// <summary>
/// Radius of the Earth
/// </summary>
public static double EarthRadiusKm = 6378.137; // WGS-84
#endregion
/// <summary>
/// 获取两点(经纬度表示)间的距离
/// </summary>
/// <param name="p1Lat">第一点纬度值</param>
/// <param name="p1Lng">第一点经度值</param>
/// <param name="p2Lat">第二点纬度值</param>
/// <param name="p2Lng">第二点经度值</param>
/// <returns></returns>
public static double GetDistance(double p1Lat, double p1Lng, double p2Lat, double p2Lng)
{
double dLat1InRad = p1Lat * (Math.PI / 180);
double dLong1InRad = p1Lng * (Math.PI / 180);
double dLat2InRad = p2Lat * (Math.PI / 180);
double dLong2InRad = p2Lng * (Math.PI / 180);
double dLongitude = dLong2InRad - dLong1InRad;
double dLatitude = dLat2InRad - dLat1InRad;
double a = Math.Pow(Math.Sin(dLatitude / 2), 2) + Math.Cos(dLat1InRad) * Math.Cos(dLat2InRad) * Math.Pow(Math.Sin(dLongitude / 2), 2);
double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
double dDistance = EarthRadiusKm * c;
return dDistance;
}
/// <summary>
/// Radius of the Earth
/// </summary>
public static double EarthRadiusKm = 6378.137; // WGS-84
#endregion
相关文章推荐
- 获取两点(经纬度表示)间距离【转】
- 获取两点(经纬度表示)间距离
- 获取两点(经纬度表示)间距离
- 获取两点(经纬度表示)间距离
- 根据经纬度求两点间距离实现源码(C#)
- 已知用经纬度表示的两点,求两点之间的直线距离
- 用C#根据经纬度求两点间距离的函数代码(转)
- scala根据经纬度获取两点距离
- 根据经纬度求两点间距离实现源码(C#)
- 如何获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等)
- php 根据两点经纬度 获取两点间距离
- 如何获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等)
- 根据两点经纬度计算距离 附C#和PHP代码
- 根据经纬度,获取两点间的距离
- 计算经纬度两点之间的距离(c#)
- c# 根据经纬度 求两点之间的距离
- 如何获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等)
- 用C#根据经纬度求两点间距离的函数代码
- 根据经纬度获取两点之间的距离(php&mysql)
- 获取两点 经纬度距离 单位:m