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");
            }
  • 相关阅读:
    Collaborative Knowledge base Embedding (CKE)
    Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation(知识图谱)
    解决:install service error: InstallAsEventCreate() failed: xxx registry key already exists
    解决:“由于可能不会将凭据发送到远程计算机,因此将不会进行连接。若要获得协助,请与您的系统管理员联系”
    Asp.Net Core下使用swagger生成api文档
    .NET Core 发布(dotnet publish)
    【.net core 入坑】.net core 3.0 报错:在 FETCH 语句中选项 NEXT 的用法无效
    使用SC命令操作(安装、开启、配置、关闭、删除)Windows下的服务
    asp.net core web应用以windows服务的方式安装运行
    asp.net core 3.0获取web应用的根目录
  • 原文地址:https://www.cnblogs.com/hugeboke/p/13348034.html
Copyright © 2011-2022 走看看