Qt编写地图综合应用45-路径规划

Qt编写地图综合应用45-路径规划,第1张

路径规划一般是根据起始点坐标经纬度和结束点坐标经纬度,查询出合适的路线。关于起始坐标和结束坐标,最开始做的是直接传入具体中文地址即可,后面百度地图不再开放此功能,貌似变成了收费功能,但是经纬度和地址互相转换的功能还是开放的,所以就多了一个步骤,后面做的是直接传入经纬度坐标进行查询,需要手动输入,现在做的是直接地图选点,在起始坐标后面的单选框选中然后在地图上直接选点,对应经纬度坐标值会自动填入,这样相对来说更人性化一些。

拿到轨迹点坐标集合进行绘制,其实调用的就是addPolyline函数进行绘制,注意收到的轨迹点坐标集合很可能是多段的,而不是完整的一段,传过来的是数组的数组,所以需要搞个循环将收到的路径点集合分线段绘制,至于线条的颜色+边框+透明度都可以设置,以便区分原来的路径查询自动绘制的路径。

根据这个功能其实又可以衍生另外一个非常有用的功能,就是将查询到的路径的轨迹点坐标集合取出来,用于其他处理比如发给设备(飞机、机器人等),让设备按照这个轨迹点移动,为了确保取出来的轨迹点坐标集合是正确的,还可以将轨迹点用不同的颜色重新绘制出来,和查询路线得到的轨迹线路进行对比,高度重合就说明是对的。

我在Ubuntu1604和Anaconda4317(Python27)上遇到了这个问题。这个问题源于安装了Qt 56版本的anaconda,而我的系统Qt库是55版本。

一个快速的技巧是通过设置LD_LIBRARY路径来确保Anaconda库位于系统库之前:export LD_LIBRARY_PATH=$HOME/anaconda2/lib:$LD_LIBRARY_PATH

不幸的是,这将破坏使用Qt55的其他程序,因此您只能在100%Python的情况下使用它,例如,如果您使用--pylab启动ipython会话。

我通过查看libxqcbso的链接方式发现了这个问题:

ldd $HOME/anaconda2/plugins/platforms/libqxcbso

报告了以下错误:/libqxcbso: /usr/lib/x86_64-linux-

都会不会啊,净瞎说。。编辑 你的工程文件(后缀是 pro), 添加 TARGET = 路径/可执行文件名, 例如 放在相对于 pro 文件的上一层目录的 bin 下, 就可以写 /bin/appName

首先在pro文件中添加CONFIG += qaxcontainer

接着程序实现

QString filepath=QFileDialog::getSaveFileName(this,tr("Save orbit"),"",tr("Microsoft Office 2007 (xlsx)"));//获取保存路径  

    if(!filepathisEmpty()){  

        QAxObject excel = new QAxObject(this);  

        excel->setControl("ExcelApplication");//连接Excel控件  

        excel->dynamicCall("SetVisible (bool Visible)","false");//不显示窗体  

        excel->setProperty("DisplayAlerts", false);//不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示  

  

        QAxObject workbooks = excel->querySubObject("WorkBooks");//获取工作簿集合  

        workbooks->dynamicCall("Add");//新建一个工作簿  

        QAxObject workbook = excel->querySubObject("ActiveWorkBook");//获取当前工作簿  

        QAxObject worksheets = workbook->querySubObject("Sheets");//获取工作表集合  

        QAxObject worksheet = worksheets->querySubObject("Item(int)",1);//获取工作表集合的工作表1,即sheet1  

        QAxObject cellX,cellY;  

        for(int i=0;i<curRow;i++){  

            QString X="A"+QString::number(i+1);//设置要 *** 作的单元格,如A1  

            QString Y="B"+QString::number(i+1);  

            cellX = worksheet->querySubObject("Range(QVariant, QVariant)",X);//获取单元格  

            cellY = worksheet->querySubObject("Range(QVariant, QVariant)",Y);  

            cellX->dynamicCall("SetValue(const QVariant&)",QVariant(ui->tableWidget->formula(i,0)toInt()));//设置单元格的值  

            cellY->dynamicCall("SetValue(const QVariant&)",QVariant(ui->tableWidget->formula(i,1)toInt()));  

        }  

  

        workbook->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(filepath));//保存至filepath,注意一定要用QDir::toNativeSeparators将路径中的"/"转换为"\",不然一定保存不了。  

        workbook->dynamicCall("Close()");//关闭工作簿  

        excel->dynamicCall("Quit()");//关闭excel  

        delete excel;  

        excel=NULL;  

    }

QFileInfoList InfoList = QDir(qApp->applicationDirPath())entryInfoList();//获取当前目录所有文件

QFileInfoList SuffixInfoList;//定义放提取文件的List

//遍历

foreach(QFileInfo fileInfo, QFileInfoList)

{

if(!fileInfoisFile()) continue;//不是文件继续,只用于加速,可不加

//后缀不区分大小写,需要区分直接用“==”

if(0==fileInfosuffix()compare(后缀), Qt::Caseinsensitive)

{

SuffixInfoList }

}

以上纯为手打,不是Copy的,可能有些拼写错误大小写错误什么的,望谅解

以上就是关于Qt编写地图综合应用45-路径规划全部的内容,包括:Qt编写地图综合应用45-路径规划、无法找到或读取qt平台模块linuxfb、QT如何修改编译后产生的可执行文件的路径》等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10206697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存