zoukankan      html  css  js  c++  java
  • C# 根据经度纬度计算两点的距离

    public class Earth  
        {  
            
    /// <summary>  
            
    /// 地球的半径  
            
    /// </summary>  
            public const double EARTH_RADIUS = 6378.137;  
      
            
    /// <summary>  
            
    /// 计算坐标点的距离  
            
    /// </summary>  
            
    /// <param name="begin">开始的经度纬度</param>  
            
    /// <param name="end">结束的经度纬度</param>  
            
    /// <returns>距离(公里)</returns>  
            public static double GetDistance(Point begin, Point end)  
            {  
                
    double lat = begin.RadLat - end.RadLat;  
                
    double lng = begin.RadLng - end.RadLng;  
      
                
    double dis = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(lat / 2), 2+ Math.Cos(begin.RadLat) * Math.Cos(end.RadLat) * Math.Pow(Math.Sin(lng / 2), 2)));  
                dis 
    = dis * EARTH_RADIUS;  
                dis 
    = Math.Round(dis * 1e4) / 1e4;  
      
                
    return dis;  
            }  
        }  
      
        
    /// <summary>  
        
    /// 代表经度, 纬度  
        
    /// </summary>  
        public class Point  
        {  
            
    /// <param name="lat">纬度 X</param>  
            
    /// <param name="lng">经度 Y</param>  
            public Point(double lat, double lng)  
            {  
                
    this.lat = lat;  
                
    this.lng = lng;  
            }  
      
            
    //  纬度 X  
            private double lat;  
      
            
    // 经度 Y  
            private double lng;  
      
            
    /// <summary>  
            
    /// 代表纬度 X轴  
            
    /// </summary>  
            public double Lat { setget; }  
      
            
    /// <summary>  
            
    /// 代表经度 Y轴  
            
    /// </summary>  
            public double Lng { getset; }  
      
            
    public double RadLat { get { return lat * Math.PI / 180; } }  
      
            
    public double RadLng { get { return lng * Math.PI / 180; } }  
        }  
  • 相关阅读:
    java设计模式演示样例
    一步一步写算法(之排序二叉树)
    收集经常使用的.net开源项目
    jdbc连接数据库
    Android开发系列(二十二):AdapterViewFlipper的功能和使用方法
    ProgressDialog使用总结
    HDU 4916 树分治
    [Unity3D]自制UnityForAndroid二维码扫描插件
    IOS ARC和非ARC文件混用
    让子弹飞Demo版
  • 原文地址:https://www.cnblogs.com/lizhao/p/1990426.html
Copyright © 2011-2022 走看看