QT调用百度地图中遇到的问题以及解决方法以及工程

首先配置好环境,我使用的环境为:

QT5.13.2

MSVC2017

调用百度地图我使用的是 webengine 类的方法,好像只有MSVC2017支持,希望大家注意,配置环境网上教程很多,多参考几个。

问题一:BMap或者BMapGL未定义

网上的解决方法:在 //api.map.baidu.com/api 前面加上http:,但是之后还是不行,然后我再百度官网下载了新的HTML文件,上面显示3.0版本,API使用3.0版本,使用后 地图可以运行

参考:

问题二:

 

服务被禁用:这里我一开始使用的是服务端的AK,显示服务被禁用,后来换成浏览器的AK后还是有问题,显示APP REFERER错误之类的信息,这里将referer白名单内容设置为 * 之后,还是有问题,但是重启电脑之后就好了,可以显示地图,并且不报错。

问题三:显示找不到qwebchannel.js文件或者未定义

 加上这行代码,并且把文件放入资源文件中,但是显示找不到qwebchannel.js文件,根据报错信息提示,意思是不再支持将文件放入资源文件中,所以我把文件移出来,放在另外的位置:

 之后可以实现js文件和QT文件的交互了

工程:

链接:https://pan.baidu.com/s/1ERThXhMTF13sR7Rgs882lg 
提取码:h3m3 

### 如何在Qt应用程序中调用百度地图API实现地图功能 #### 使用QWebEngineView组件加载百度地图 为了在Qt应用程序中集成百度地图,可以采用`QWebEngineView`组件来加载包含百度地图API的HTML页面。此方法适用于希望快速实现在桌面应用中嵌入地图视图的需求[^2]。 ```cpp #include <QApplication> #include <QWebEngineView> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWebEngineView view; QString apiKey = "您的百度地图API密钥"; // 替换成自己的API Key QString url = QString("https://api.map.baidu.com/api?v=3.0&ak=%1").arg(apiKey); view.setUrl(QUrl(url)); view.resize(800, 600); view.show(); return app.exec(); } ``` 这段代码创建了一个简单的Qt窗口,在其中通过`QWebEngineView`控件加载了由指定URL参数构建的地图实例。注意需将`apiKey`变量设置为你从百度获取的实际开发密钥[^4]。 #### 实现基础地图操作 除了单纯显示地图外,还可以进一步扩展功能,比如向地图添加标记或路径规划等高级特性。这通常涉及到与前端JavaScript代码之间的交互,借助于`QWebChannel`类可以在C++端和浏览器渲染引擎之间建立桥梁[^3]。 ```javascript // 假设这是内联于HTML中的JS部分 function addMarker(lng, lat){ var point = new BMap.Point(lng,lat); var marker = new BMap.Marker(point); map.addOverlay(marker); } // C++侧可以通过evaluateJavaScript()执行上述函数 view.page()->runJavaScript(QString("addMarker(%1,%2)").arg(longitude).arg(latitude)); ``` 以上示例展示了如何定义一个用于放置新标记点的JavaScript函数,并说明了怎样从C++环境中触发该行为。这种方式允许灵活控制地图上的动态元素,满足不同应用场景下的需求[^1]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值