Qt计算任意两点地理坐标的距离

计算地图上任意两点坐标间的距离

看的这个网址的https://www.it610.com/article/1293116557127393280.htm
在我的Qt中是这样的
在这里插入图片描述
槽函数接受控件的信号做处理。

加上
#include <math.h>
#define _USE_MATH_DEFINES

    QString startPoint = ui->txtStartAddr->text();//获取起点坐标的值
    QString endPoint = ui->txtEndAddr->text();//获取终点坐标的值
    QStringList list = startPoint.split(",");//按逗号分离

    qreal long1 = list[0].toDouble();//得到第一个点的经度
    qreal lat1 = list[1].toDouble();//得到第一个点的纬度
    list.clear();
    list = endPoint.split(",");
    qreal long2 = list[0].toDouble();//得到第二个点的经度
    qreal lat2 = list[1].toDouble();//得到第二个点的纬度

    qreal a, b, R;
    R = 6378137; // 地球半径
    lat1 = lat1 * M_PI / 180.0;
    lat2 = lat2 * M_PI / 180.0;
    a = lat1 - lat2;
    b = (long1 - long2) * M_PI / 180.0;
    qreal sa2, sb2;
    sa2 = sin(a / 2.0);
    sb2 = sin(b / 2.0);
    qreal distance //计算出距离
            = 2 * R * asin(sqrt(sa2 * sa2 + cos(lat1) * cos(lat2) * sb2 * sb2));
    ui->txtDistance->setText(QString::number(distance,'f',3)); //同步到控件上并保留三位小数
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值