!!!!要用到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