c#代码实现根据经纬度获取2点之间距离

来源:互联网 发布:mac的office软件 编辑:程序博客网 时间:2024/05/07 05:40

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;        }    }


0 0
原创粉丝点击