已知當前地理位置經緯度查詢幾個點中最近的一個地點demo


1.首先定義一個點與點之間測算距離的方法

2.然后定義找出基本點和集合中最近的一個點的方法

3.取第一條數據即是最近的點的坐標

1   public class Location
2         {
3             public int id { set; get; }//地點的id
4             public double lat { set; get; }
5             public double lng { set; get; }
6             public double distance { set; get; }//地點的距離
7         }
 1   private const double EARTH_RADIUS = 6378.137;//地球半徑
 2         private double rad(double d)
 3         {
 4             return d * Math.PI / 180.0;
 5         }
 6         //根據兩個點的左邊測算出距離
 7         public double GetDistance(Location location1, Location location2)
 8         {
 9             double radLat1 = rad(location1.lat);
10             double radLat2 = rad(location2.lat);
11             double a = radLat1 - radLat2;
12             double b = rad(location1.lng) - rad(location2.lng);
13 
14             double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) +
15              Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2)));
16             s = s * EARTH_RADIUS;
17             s = Math.Round(s * 10000) / 10000;
18             return s;
19         }
20         //找出基本點和數組中最近的一個點
21         public List<Location> GetDistance(Location location1, List<Location> location2)
22         {
23             Location lo=new Location();
24             foreach (var item in location2)
25             {
26                 lo.lat=item.lat;
27                 lo.lng=item.lng;
28                 item.distance = GetDistance(location1, lo);
29             }
30             return location2.OrderBy(c=>c.distance).ToList();
31         }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM