地图html-Qt实现百度地图API的调用——对象轨迹的设计、插入、删除、保存、读取

最近做一个项目,需要使用Qt调用百度地图API。 目前这个需求已经实现了,所以写下这篇文章,分享一下,顺便记录一下自己的一些学习内容地图html,方便以后进一步学习。

Qt使用的编译环境是MSVC2015 32bit Release of Qt5.14.0。 当然,Debug也可以实现这个功能。 我没有尝试过其他版本的编译器。 js文件使用的编译器为IntelliJ IDEA2020,百度地图API版本为3.0。 地图显示框架使用QWebEngineView。 接下来的介绍如下。

首先介绍一下我分享的项目中实现的功能: ①通过鼠标点击勾勒出物体的运动轨迹,包括下降点以及点与点之间的连接。 ②点击“删除”按钮,可以删除特定点及点信息。 ③点击“插入”按钮,可以插入具体的点及点信息。 ④点击“保存”按钮,将轨迹上的所有点及点信息保存为txt文件。 ⑤点击“读取轨迹文件”按钮,从选中的txt文件中读取轨迹点并显示。

ps:还可以实现轨迹的实时显示。 由于时间关系,我没有添加,但使用的原理与共享文件中降低点和线的过程相同。

我使用的API是离线地图API。 如果您想使用在线版,只需更换为在线版的百度地图API即可。

Qt与百度地图API的通信主要依赖js文件,比如共享文件夹中的qwebchannel。 共享文件夹中的文件信息已在ReadMe.txt中详细描述。 js程序也进行了详细的说明。 这些注释可以帮助你更好地理解每个句子的作用和功能。 这已经是一个比较成熟的版本了。 运行上基本上没有什么大的问题和bug,可以直接移植到项目中进行修改。

我们看一下运行的效果图:

①初始运行界面。

②点击鼠标左键生成轨迹,将键盘放在该点的标记上即可显示该点的经纬度信息。 这些轨迹点可以被拖放,拖放点的坐标信息也会被手动更新。

③点击“删除”按钮即可看到运行界面及效果。

④点击“插入”按钮即可看到运行界面及效果图。

⑤点击“保存”按钮,保存的txt文件如图所示。

⑥点击“读取轨迹文件”按钮,选择其中保存的txt文件,读取的轨迹图如图所示。

右下角的四个键盘都是直接在js文件中编写程序显示的。 通过Qt按钮来实现也是可以的地图html,只要做好Qt键盘程序与API之间的通信即可。

Qt主要通过以下代码建立与API的连接。 使用时需要更改js文件的路径,即QDir temDir("MAP/MapShow/MapShow.html")。 修改成自己的路径就可以正常调用了。

void MainWindow::MapIni()
{
    mainMap_view=new QWebEngineView(this);
    mainMap_view->setParent(ui->MapWeb);
    channel = new QWebChannel(this);   //创建通道对象用于与JS交互
    Route *myRoute=new Route();        //创建通道对象用于与JS交互
    channel->registerObject("Route",(QObject*)myRoute);
    mainMap_view->page()->setWebChannel(channel);
    QDir temDir("MAP/MapShow/MapShow.html");
    QString absDir = temDir.absolutePath();
    QString filePath = "file:///" + absDir;
    mainMap_view->page()->load(QUrl(filePath));
}

Qt主要通过以下两句来调用js文件中的函数。 js文件中有一个名为accept_ReadData的函数,由runJavaScript调用。 js文件通过这句Route_js.ReadRoute()调用Qt函数来调用Qt中的ReadRoute()函数。

QString SendDataCmd = QString("accept_ReadData(%0,%1,%2,%3)").arg(RouteRead[i].id)
                                                     .arg(RouteRead[i].lon)
                                                     .arg(RouteRead[i].lat)
                                                     .arg(RouteRead[0].num);
mainMap_view->page()->runJavaScript(SendDataCmd);

由于程序较多,只写最关键的两个程序,其他程序就不一一重复了。 只需点击链接即可前往CSDN的资源下载:Qt5.14.0实现百度地图API的调用,使用QWebEngineView实现地图网页显示_qt调用地图,qt显示百度地图-QT文档资源-CSDN下载。

这是百度网盘的资源,需要的也可以下载。链接:网盘链接

提取码:zzkf。 如果失败请联系我,我会补充。

如果您在使用过程中遇到任何问题,请随时沟通。 转载请说明。