c#代码实现根据经纬度获取2点之间距离
此代码不是原创,是根据网上代码整理
直接调用2个获取距离方法就可以得到2点之间距离
public class MapHelper
{
private const double earth_radius = 6378.137;//地球半径
private static double rad(double d)
{
return d * Math.PI / 180.0;
}
/// <summary>
/// 计算2个点之间的距离
/// </summary>
/// <param name="lat1">点A</param>
/// <param name="lng1">点A</param>
/// <param name="lat2">点B</param>
/// <param name="lng2">点B</param>
/// <returns>公里</returns>
public static double GetDistanceKilometre(double lat1, double lng1, double lat2, double lng2)
{
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double a = radLat1 - radLat2;
double b = rad(lng1) - rad(lng2);
double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) +
Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2)));
s = s * earth_radius;
s = Math.Round(s * 10000) / 10000;
return s;
}
/// <summary>
/// 计算2个点之间的距离
/// </summary>
/// <param name="lat1">点A</param>
/// <param name="lng1">点A</param>
/// <param name="lat2">点B</param>
/// <param name="lng2">点B</param>
/// <returns>米</returns>
public static double GetDistanceMeter(double lat1, double lng1, double lat2, double lng2)
{
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double a = radLat1 - radLat2;
double b = rad(lng1) - rad(lng2);
double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) +
Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2)));
s = s * earth_radius;
s = Math.Round(s * 10000) / 10;
return s;
}
}