zoukankan      html  css  js  c++  java
  • 通过两个位置的经纬度坐标计算距离(C#版本)

          /// <summary>
        /// 通过地图上的两个坐标计算距离(C#版本)
        /// Add by 成长的小猪(Jason.Song) on 2017/11/01
        /// http://blog.csdn.net/jasonsong2008
        /// </summary>
        public class MapHelper
        {
            /// <summary>
            /// 地球半径
            /// </summary>
            private const double EarthRadius = 6378.137;
    
    
            /// <summary>
            /// 经纬度转化成弧度
            /// Add by 成长的小猪(Jason.Song) on 2017/11/01
            /// http://blog.csdn.net/jasonsong2008
            /// </summary>
            /// <param name="d"></param>
            /// <returns></returns>
            private static double Rad(double d)
            {
                return d * Math.PI / 180d;
            }
    
    
            /// <summary>
            /// 计算两个坐标点之间的距离
            /// Add by 成长的小猪(Jason.Song) on 2017/11/01
            /// http://blog.csdn.net/jasonsong2008
            /// </summary>
            /// <param name="firstLatitude">第一个坐标的纬度</param>
            /// <param name="firstLongitude">第一个坐标的经度</param>
            /// <param name="secondLatitude">第二个坐标的纬度</param>
            /// <param name="secondLongitude">第二个坐标的经度</param>
            /// <returns>返回两点之间的距离,单位:公里/千米</returns>
            public static double GetDistance(double firstLatitude, double firstLongitude, double secondLatitude, double secondLongitude)
            {
                var firstRadLat = Rad(firstLatitude);
                var firstRadLng = Rad(firstLongitude);
                var secondRadLat = Rad(secondLatitude);
                var secondRadLng = Rad(secondLongitude);
    
    
                var a = firstRadLat - secondRadLat;
                var b = firstRadLng - secondRadLng;
                var cal = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) + Math.Cos(firstRadLat) 
                    * Math.Cos(secondRadLat) * Math.Pow(Math.Sin(b / 2), 2))) * EarthRadius;
                var result = Math.Round(cal * 10000) / 10000;
                return result;
            }
    
    
            /// <summary>
            /// 计算两个坐标点之间的距离
            /// Add by 成长的小猪(Jason.Song) on 2017/11/01
            /// http://blog.csdn.net/jasonsong2008
            /// </summary>
            /// <param name="firstPoint">第一个坐标点的(纬度,经度)</param>
            /// <param name="secondPoint">第二个坐标点的(纬度,经度)</param>
            /// <returns>返回两点之间的距离,单位:公里/千米</returns>
            public static double GetPointDistance(string firstPoint, string secondPoint)
            {
                var firstArray = firstPoint.Split(',');
                var secondArray = secondPoint.Split(',');
                var firstLatitude = Convert.ToDouble(firstArray[0].Trim());
                var firstLongitude = Convert.ToDouble(firstArray[1].Trim());
                var secondLatitude = Convert.ToDouble(secondArray[0].Trim());
                var secondLongitude = Convert.ToDouble(secondArray[1].Trim());
                return GetDistance(firstLatitude, firstLongitude, secondLatitude, secondLongitude);
            }
    
    
        }

    调用方法:

        /// <summary>
            /// 文章来源于成长的小猪
            /// http://blog.csdn.net/jasonsong2008
            /// </summary>
            /// <param name="args"></param>
            static void Main(string[] args)
            {
                //第一种调用方法
                var result = MapHelper.GetDistance(31.2553210000, 121.4620020000, 31.2005470000, 121.3269970000);
    
    
                //第二种调用方法
                result = MapHelper.GetPointDistance("31.2553210000,121.4620020000", "31.2005470000,121.3269970000");
            }
  • 相关阅读:
    Group_concat介绍与例子
    国家大学科技园名单
    shell截取第五行第三列
    (Deep) Neural Networks (Deep Learning) , NLP and Text Mining
    28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架
    SpeeDO —— 并行深度学习系统
    BrandZ:2016年全球最具价值品牌百强榜(完整报告)
    jdk1.7升级到jdk1.8后出错: [ERROR] javadoc: warning
    伪基站收集方圆500至1000米范围内的手机卡信息,并且通过伪基站设备伪装成银行、中国移动、中国联通等任意号码向手机用户发送短信或拨打电话
    360手机助手内部资料曝光,63张PPT纯干货
  • 原文地址:https://www.cnblogs.com/hugeboke/p/13348034.html
Copyright © 2011-2022 走看看