最近在无人船循迹导航问题,看到网上好多加载百度地图API的,按照相关博客进行了加载应用,发现应用别人注册完成的AK值可以正常读取到百度地图,而自己注册AK后经常出现地图闪现后消失,而且报错如下:
Check failed: !result.opaque().
Backtrace:
QWebEngineUrlSchemeHandler::qt_static_metacall [0x00007FFDEAA42282+1143858]
QWebEngineUrlSchemeHandler::qt_static_metacall [0x00007FFDEAA5C04C+1249788]
QWebEngineUrlSchemeHandler::qt_static_metacall [0x00007FFDEAA5C003+1249715]
QWebEngineUrlSchemeHandler::qt_static_metacall [0x00007FFDEA93C1EE+70558]
一开始怀疑是QWebEngineView设置问题,或是自己注册AK值有问题包括询问百度地图客服,都没得到解决。之后利用别人程序验证AK值是没问题的可以用。
通常我们在Qt加载百度地图JS文件格式是:
ui->webView->page()->load(QUrl("qrc:/MAP/MapShow/onlineMap.html"));
onlineMap.html内定义了相关地图界面要求,可参考地图JS API示例 | 百度地图开放平台
但是编译时地图闪现后消失,报错如上。
后经参考研究博客:关于QT使用qwebengineview调用百度地图api
其内采用绝对路径的方式加载地图:map->load(QUrl("file:///D:/QTcode/transfer/mysite.html"));
后经修改自己加载HTML文件的格式:ui->webView->page()->load(QUrl("file:///E:/***/MAP/MapShow/onlineMap.html"));
地图得以正常加载显示。
期间参考博客,添加了:关于QT使用qwebengineview调用百度地图api_load(qurl("file:///.map.html"))-CSDN博客
针对编译器也进行配置,在debugger里改为了auto-detected cbd:
如果没有,打开控制面板->程序->程序和功能->选择windows software development Kit进行更改
最终问题得以解决,可以自己申请AK值利用最新版本加载百度地图API了,该问题折磨了一周时间。