以下是计算两经纬度之间距离的代码,分为:头文件、源代码和测试代码三部分。
具体如下:

 1 // LatLonDistanceDlg.h : 头文件
 2 //
 3
 4 #pragma once
 5
 6 typedef struct
 7 {
 8     double dLongitude;
 9     double dLatitude;
10 }MyLatLong_T,*pMyLatLong_T;
11
12 // CLatLonDistanceDlg 对话框
13 class CLatLonDistanceDlg : public CDialog
14 {
15     ......
16
17     void DistanceOfTwoPositions(MyLatLong_T ll_PosStart, MyLatLong_T ll_PosEnd, double &dis);
18 // 实现
19 protected:
20     ......
21 };
22
23 // LatLonDistanceDlg.cpp : 实现文件
24 //
25
26 // 常量定义
27 const double gConstPI = 3.1415926536;
28 // WGS-84 长轴半径
29 #define EARTH_LONG_RADIUS_WGS84 6378137.0       // 单位: 米
30 // WGS-84 地球扁率(earth flattening)
31 #define EARTH_FLATTENING_WGS84  298.257223563
32 // meters per sea mile
33 #define METERS_PER_SEA_MILE     1852.0
34
35 // 输入参数: MyLatLong_T 是个结构,包括经度和纬度
36 // 输出参数: dDistance 就是返回的大圆距离
37 void CLatLonDistanceDlg::DistanceOfTwoPositions(MyLatLong_T StartLatLong, MyLatLong_T EndLatLong, double &dDistance)
38 {
39     double DInRadians;
40     double dTmpVal = 0.0;
41     double dFi = 0.0;
42     double dFi2 = 0.0;
43     double dDrda = EndLatLong.dLongitude - StartLatLong.dLongitude;
44     double dTmp = 0.0;
45     double dTmp2 = 0.0;
46
47     dDrda = dDrda * gConstPI / 180.0;   // in radians
48     dFi = StartLatLong.dLatitude;
49     dFi2 = EndLatLong.dLatitude;
50
51     dFi = dFi * gConstPI / 180.0;       // in radians
52     dFi2 = dFi2 * gConstPI / 180.0;     // in radians
53
54     dTmpVal = sin(dFi) * sin(dFi2) + cos(dFi) * cos(dFi2) * cos(dDrda);
55     if(fabs(dTmpVal) > 1.0)
56     {
57         AfxMessageBox(L"Invalidate value of arccos!");      // Use Unicode Character Set
58         return ;
59     }
60     DInRadians = acos(dTmpVal);         // in radians
61     dTmp = (sin(dFi) + sin(dFi2));
62     dTmp2 = (sin(dFi) - sin(dFi2));
63     dTmpVal = ((3 * sin(DInRadians) - DInRadians) * dTmp * dTmp ) / (1 + cos(DInRadians));
64     dTmpVal = dTmpVal - ((3 * sin(DInRadians) + DInRadians) * dTmp2 * dTmp2) / (1 - cos(DInRadians));
65
66     dDistance = EARTH_LONG_RADIUS_WGS84 * DInRadians + (EARTH_LONG_RADIUS_WGS84 / (4 * EARTH_FLATTENING_WGS84)) * dTmpVal;//in meters
67 }
68
69 // 测试代码
70 // TODO: 在此添加额外的初始化代码
71 {
72     // 深圳百合酒店 纬度:22.601369,经度114.115145
73     // 深圳百合星城 纬度:22.601334,经度114.115807
74     // 深圳布吉农批 纬度:22.583596,经度114.112227
75     MyLatLong_T LatLon;
76     MyLatLong_T LatLon2;
77     MyLatLong_T LatLon3;
78     double dDis = 0.0;
79
80     LatLon.dLatitude = 22.601369;
81     LatLon.dLongitude = 114.115145;
82     LatLon2.dLatitude = 22.601334;
83     LatLon2.dLongitude = 114.115807;
84     LatLon3.dLatitude = 22.583596;
85     LatLon3.dLongitude = 114.112227;
86
87     DistanceOfTwoPositions(LatLon,LatLon2,dDis);
88     TRACE("%f\r\n",dDis);   // 68.177865
89     DistanceOfTwoPositions(LatLon,LatLon3,dDis);
90     TRACE("%f\r\n",dDis);   // 1990.891295
91 }  

转载于:https://www.cnblogs.com/91program/p/5206700.html

两经纬度之间的距离计算相关推荐

  1. Mysql: LBS实现查找附近的人 (两经纬度之间的距离)

    1. 利用GeoHash封装成内置数据库函数的简易方案: A:Mysql 内置函数方案,适合于已有业务,新增加LBS功能,增加经纬度字段方可,避免数据迁移 B:Mongodb 内置函数方案,适合中小型 ...

  2. 经纬度之间的距离计算

    来自谷歌地图的计算公式: 通过JAVA的Math类各种方法调用.实现上述公式 private static double EARTH_RADIUS = 6378.137;// 单位千米/*** 角度弧 ...

  3. mysql 下 计算 两点 经纬度 之间的距离 计算结果排序

    根据经纬度计算距离公式 公式 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung ...

  4. mysql 单精度和双经度_mysql 下 计算 两点 经纬度 之间的距离 计算结果排序

    根据经纬度计算距离公式 公式 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung ...

  5. java计算两个经纬度之间的距离

    前一阵项目中,有一个需求:是查找附近的人,其实就是查询某个距离内有多少用户.实现方式还是比较简单的,之前使用GeodeticCalculator计算经纬度误差在高德上与腾讯有点偏差,首先用户在APP上 ...

  6. 高德经纬度距离计算php,计算两个经纬度之间的距离 单位(m)

    /** * 计算两个经纬度之间的距离 单位(m) * * @param lat1 * @param lng1 * @param lat2 * @param lng2 * @return */ publ ...

  7. hive 计算两个经纬度之间的距离

    select 6378137*2*ASIN(SQRT(POWER(SIN((lat1-lat2)*ACOS(-1)/360),2) + COS(lat1*ACOS(-1)/180)*COS(lat2* ...

  8. php经纬度之间的距离计算公式,php计算两个经纬度地点之间距离的方法分享

    用php计算两个指定的经纬度地点之间的距离,代码: /** *求两个已知经纬度之间的距离,单位为米 *@param lng1,lng2 经度 *@param lat1,lat2 纬度 *@return ...

  9. php两个经纬度之间距离,如何使用php计算出两个经纬度之间的距离

    通过使用php来计算两个经纬度之间的距离. /* * 计算出两个经纬度之间的距离(单位:米) * */public function getdistanceAction() { $lng1=117.2 ...

最新文章

  1. 行走智慧城市 数据要有统一“身份”
  2. 5g时代新型基础设施建设白皮书 下载_全文下载 | 5G时代新型基础设施建设白皮书...
  3. 提高程序员职场价值的10大技巧
  4. 利用CSS3 animation绘制动态卡通人物,无需使用JS代码
  5. oracle 主键自增
  6. http服务器和application服务器区别
  7. 北大飞跃手册_活动推介|2020年吉林大学飞跃手册预发布会即将召开!
  8. pip安装:Cannot uninstall ''. It is a distutils installed project and thus we cannot accurately....解决办法
  9. 百度云盘停止服务器,又一家网盘关闭!不要再问为什么百度网盘要收费了
  10. libuv之msys2环境下编译
  11. Go:Gnome sort 侏儒排序(附完整源码)
  12. 500G 史上最全的JAVA全套教学视频网盘
  13. 南瓜派php,南瓜派 巧克力塔
  14. 使用cloc进行代码统计
  15. PHP explode() 函数与implode() 函数
  16. 牛津计算机本科申请,为什么牛津和剑桥不能同时申请?本科报哪一个的录取机会更大?...
  17. CSC改派+延期|影像学医生赴英国伦敦国王学院从事访学研究
  18. 华为路由器RIP V2作业
  19. 【python | linux07】OS模块的用法及python换行符问题
  20. 中国科学院计算机院士,中国科学院院士王怀民莅临计算机学院交流指导

热门文章

  1. Java虚拟机——类加载机制
  2. android学习笔记(入门篇)
  3. udhcp源码详解(五) 之DHCP包--options字段
  4. fastreport 中 给数值形数据做 格式 保留小数位数以0补足
  5. Android Textview控件
  6. ISA2006的部署
  7. CSS 多浏览器兼容又一方案
  8. sports at liverpool
  9. 大佬的引用。。。。太猛了啊
  10. it is important to delete your email mailbox in a frequent manner!