300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > QT调用百度地图显示 并去掉logo 可输入经纬度定位

QT调用百度地图显示 并去掉logo 可输入经纬度定位

时间:2022-09-18 22:51:32

相关推荐

QT调用百度地图显示 并去掉logo 可输入经纬度定位

!!!!要用到webengineview控件就要有webenginewidgets模块,那编译器必须是msvc编译器,而且QT版本不能太低好像最低要5.6

第一,①首先是ui文件,如果有webengineview控件那直接放上去即可

②如果没有webengineview控件,可以自己写一个代码如下

widget.h

#include <QtWebEngineWidgets/QWebEngineView>#include <QtWebEngineWidgets>private:Ui::Widget *ui;QWebEngineView *mapView;

widght.cpp

mapView = new QWebEngineView(this);mapView->setGeometry(x1,y1,x2,y2);//setGeometry前两个参数是左上角左边,后两个参数是宽度和高度,别记混了

③可以将GraphicsView控件提升为QWebEngineView类,提升方法很简单,放一个GraphicsView控件,右键提升为就可以了,这个是看的一个大佬的方法可以去看看

QT5百度地图开发学习——GraphicsView控件提升为QWebEngineView地图显示

然后就是加载地图了,这个需要去自己写html文件,网上随便找找就有的,如果想去掉logo只需要在html文件里加上这个就得,当然百度是不允许的

<style>/*去除百度地图版权*/.anchorBL{display:none;} </style>

这个是定位函数 添加到html文件即可

function theLocation(Longitude,Latitude) {var gpsPoint = new BMap.Point(Longitude, Latitude);BMap.Convertor.translate(gpsPoint, 0, translateCallback);//map.clearOverlays();//var new_point = new BMap.Point(Longitude,Latitude );//var marker = new BMap.Marker(new_point); //map.addOverlay(marker); //map.panTo(new_point);//marker.setAnimation(BMAP_ANIMATION_BOUNCE); }

然后是加载地图函数和定位函数

//我用的是第三种方法,所以我可以用ui->graphicsView->page();如果是前两种,改一下名字//为webengineview即可void Widget::on_loadMap_clicked(){QWebEnginePage *page = ui->graphicsView->page();//QString mappathA = exepath + "/BaiduMap/baiDuMap.html";QString htmlPath = "E:/Qt/BaiduMap/BaiduMap/baiDuMap.html";//qDebug()<<mappathA;page->load(QUrl((htmlPath)));}void Widget::on_setPosition_clicked(){QString Lng = ui->lineEditlng->text();//获取经度QString Lat = ui->lineEditlat->text();//获取纬度QWebEnginePage *page = ui->graphicsView->page();QString command = QString("theLocation(%1,%2)").arg(Lng).arg(Lat);page->runJavaScript(command);}

演示:

点击加载地图

定位

源码:/download/qq_52926110/85352516

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。