0


Qt中使用QWebEngine加载百度离线地图,在特定地点加载个圣诞树

一、前言

2022年圣诞节到来啦,很高兴这次我们又能一起度过~
遇上圣诞节,正好最近研究了QT中加载百度离线地图,用百度地图API加载个圣诞树(主要我想要那个圣诞节特制勋章)。

二、创意名

在百度离线地图加载个圣诞树。

三、效果展示

在这里插入图片描述
本来应该做成gif格式,奈何电脑的制作工具找不到了,那个圣诞树会动的,在合肥的位置不灵不灵的。在这里插入图片描述

四、实现步骤(很重要)

4.1 前提

1、QT中能使用QWebEngine必须要在VS2017以及以上使用,才支持,这点很重要
2、百度离线地图地图下载我用的是 地址
里面有很多百度给的官方API用例
3、如果使用其他下载地图切片,我使用的是全能地图下载器,切记下载百度地图,因为你用的是百度的API,如果使用谷歌的那就下载对应的,不然地图加载不了

4.2 步骤

1、创建一个widget,然后提升为QWebEngineView;
2、在百度官方例子中使用一个满足自己功能,如果想日后自己使用,最好精简一个版本
3、QT与html前端的交互,功能可以用js写在html中,也可以写在其他中,通过Webchannel传递;

五、编码实现

主要代码展示
QT中初始化时候代码

    ui->setupUi(this);
    view = ui->widget;
    QDir temDir("../TestMap3/Baidu_JS/sample.html");
    QString absDir = temDir.absolutePath();

    QWebChannel *channel = new QWebChannel(this);//brige 是一个类,在qt中定义,然后在html文本中注册就可以使用   其中的功能函数
    channel->registerObject("bridge"(QObject*)bridge::instance());
   view->page()->setWebChannel(channel);
   view->page()->load(QUrl(QString("file:///%0").arg(absDir)));connect(ui->pushButton,&QPushButton::clicked,[this](){
       view->page()->runJavaScript("showSant()");

前端html主要代码

function showSant(){
              var pt = new BMap.Point(117.209338,31.85);
            var myIcon = new BMap.Icon("./sant.gif", new BMap.Size(32,32));
            var marker2 = new BMap.Marker(pt,{icon:myIcon});// 创建标注
            map.addOverlay(marker2);// 将标注添加到地图中}//注册使用 bridge类
      new QWebChannel(qt.webChannelTransport,function(channel){
        window.bridge = channel.objects.bridge;
        window.bridge.sigYourName.connect(function(name){alert(name);});});

      function onShowMsgBox(){
        bridge.showMsgBox()}

      function onGetYourName(){
        bridge.getYourName();}
标签: qt ui 开发语言

本文转载自: https://blog.csdn.net/ljsant/article/details/128490302
版权归原作者 疯狂的挖掘机 所有, 如有侵权,请联系我们删除。

“Qt中使用QWebEngine加载百度离线地图,在特定地点加载个圣诞树”的评论:

还没有评论