计算地图上任意两点坐标间的距离
看的这个网址的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)); //同步到控件上并保留三位小数