Qt C++中QGeoCoordinate使用指南:azimuthTo()与distanceTo()方法详解
Qt C++中QGeoCoordinate的azimuthTo()与distanceTo()方法使用
1. distanceTo()方法获取两点距离
distanceTo()方法用于计算两个地理坐标之间的球面距离,返回值单位为米。直接调用已初始化的QGeoCoordinate对象的该方法,传入目标坐标即可。
结合你的代码,修改后示例:
#include <QGeoCoordinate> #include <QDebug> int main() { QGeoCoordinate geo; geo.setLatitude(90); geo.setLongitude(90); QGeoCoordinate geo2; geo2.setLatitude(53.213456); geo2.setLongitude(-9.182547); // 计算两点距离 qreal distance = geo.distanceTo(geo2); qDebug() << "两点距离:" << distance << "米"; // 如需转换为公里,可除以1000 qDebug() << "两点距离:" << distance / 1000 << "公里"; return 0; }
说明:该方法基于WGS84坐标系计算球面最短距离(大圆距离),无需额外参数,直接调用即可得到结果。
2. azimuthTo()方法获取方位角
azimuthTo()方法返回从当前坐标指向目标坐标的方位角,范围为0°到360°:
- 0°代表正北方向
- 90°代表正东方向
- 180°代表正南方向
- 270°代表正西方向
使用示例(基于你的坐标):
// 计算方位角 qreal azimuth = geo.azimuthTo(geo2); qDebug() << "从geo到geo2的方位角:" << azimuth << "°";
如果目标坐标与当前坐标重合,该方法会返回NaN。
注意事项
- 使用前确保QGeoCoordinate对象已正确初始化(纬度范围-90°到90°,经度范围-180°到180°),否则方法可能返回无效值。
- 两个方法的返回值均为qreal类型,可根据需求进行单位转换或精度处理。
内容的提问来源于stack exchange,提问作者Nabil Haidar
相关产品推荐
相关产品推荐

