根据GPS经纬度查找指定范围内的对象
2008-12-10 09:41
603 查看
项目上需要根据当前的经纬度查询指定范围内离这个坐标最近的对象。
因为是DEMO,代码风格,对象命名都很不规范。。 主要是思路。请大家指正
1
2 public static void CheckGps()
3 {
4
5 double temp = Common.Jl; //Common.Jl 指定的查找距离。单位(米)
6 Common.Test dd = new Common.Test(); //查询的对象
7 bool find = false;
8 //MessageBox.Show("Test");
9
10 foreach (Common.Test test in Common.testList)
11 {
12 double jl = GetDistance(test.lat, test.lon, Common.gpsinfo.latitude, Common.gpsinfo.longitude);
13 if (Common.Jl > jl) //如果在查询范围内
14 {
15 if (jl < temp) //如果比当前最近坐标还近
16 {
17 find = true;
18 temp = jl; //当前为最近距离的对象
19 dd = test;
20 }
21 }
22 }
23 if (find)
24 {
25 MessageBox.Show(dd.name + "距离:" + temp.ToString());
26 Common.xl = false;
27 }
28 }
29
30
31 public static double rad(double d)
32 {
33 return d * Math.PI / 180.0;
34 }
35 public static double GetDistance(double lat1, double lng1, double lat2, double lng2)
36 {
37 double EARTH_RADIUS = 6378.137;
38 double radLat1 = rad(lat1);
39 double radLat2 = rad(lat2);
40 double a = radLat1 - radLat2;
41 double b = rad(lng1) - rad(lng2);
42 double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) +
43 Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2)));
44 s = s * EARTH_RADIUS;
45 s = Math.Round(s * 10000) / 10000;
46 s = s * 1000;
47 return s;
48 }
因为是DEMO,代码风格,对象命名都很不规范。。 主要是思路。请大家指正
1
2 public static void CheckGps()
3 {
4
5 double temp = Common.Jl; //Common.Jl 指定的查找距离。单位(米)
6 Common.Test dd = new Common.Test(); //查询的对象
7 bool find = false;
8 //MessageBox.Show("Test");
9
10 foreach (Common.Test test in Common.testList)
11 {
12 double jl = GetDistance(test.lat, test.lon, Common.gpsinfo.latitude, Common.gpsinfo.longitude);
13 if (Common.Jl > jl) //如果在查询范围内
14 {
15 if (jl < temp) //如果比当前最近坐标还近
16 {
17 find = true;
18 temp = jl; //当前为最近距离的对象
19 dd = test;
20 }
21 }
22 }
23 if (find)
24 {
25 MessageBox.Show(dd.name + "距离:" + temp.ToString());
26 Common.xl = false;
27 }
28 }
29
30
31 public static double rad(double d)
32 {
33 return d * Math.PI / 180.0;
34 }
35 public static double GetDistance(double lat1, double lng1, double lat2, double lng2)
36 {
37 double EARTH_RADIUS = 6378.137;
38 double radLat1 = rad(lat1);
39 double radLat2 = rad(lat2);
40 double a = radLat1 - radLat2;
41 double b = rad(lng1) - rad(lng2);
42 double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) +
43 Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2)));
44 s = s * EARTH_RADIUS;
45 s = Math.Round(s * 10000) / 10000;
46 s = s * 1000;
47 return s;
48 }
相关文章推荐
- 根据GPS经纬度查找指定范围内的对象
- 根据指定地点的经纬度算出指定的距离的经纬度范围
- tp3.2根据经纬度查询离我最近,并按指定范围查询商家,由近到远排序。
- JavaScript根据指定路径查找对象属性值
- 根据已知经纬度和指定的范围求出最大及最小的经纬度
- Python3基础 list index 全列表查找与指定索引范围查找
- 在使用jquery根据id查找对象时,如果你的id里含有.时,jquery并不会像你所想找的节点
- 根据GPS数据的经纬度取天气预报和地名
- NSString:创建,长度,取字符,是否以某字符串开头,结尾, 查找指定字符串的范围,截取,拼接,替换,比较,替换,数值转换,大小写转换
- Java 如何根据指定的范围获取随机数
- C#获取指定月指定周的日期范围 根据当前时间获取本月开始日期和结束日期
- Python实现函数,在Sqlite中根据分数段查找指定的名字
- 调用百度地图API确定地址的经纬度,根据地址的经纬度查找中文地址
- SQL根据关键字查找其存在的所有对象
- 根据包名,在指定空间中创建对象
- JAVA 根据经纬度计算地球上任意两点距离GPS
- atitit.颜色查找 根据范围 图像处理 inRange
- 查指定范围内的街道(基于经纬度)
- 使用GPS经纬度定位附近地点(某一点范围内查询)
- android安卓根据地名查找经纬度(百度地图)