#include "MyMainWindow.h"
#include <QCoreApplication>
#include <QDebug>
MyMainWindow::MyMainWindow(QWidget *parent)
: QWidget(parent)
{
this->resize(1200, 660);
this->setWindowTitle(tr("MyWebEngineView"));
mWebView = new QWebEngineView(this);
mWebView->setFixedSize(960, 660);
mWebView->setContentsMargins(0,0,0,0);
mWebPage = new QWebEnginePage(this); // 定义一个page作为页面管理
mWebChannel = new QWebChannel(this); // 定义一个channel作为和JS或HTML交互
mWebChannel->registerObject("interactObj", this); // 注册Qt对象
mWebPage->setWebChannel(mWebChannel); // 把channel配置到page上,让channel作为其信使
mWebView->setPage(mWebPage); // 建立page和UI上的webEngine的联系
lab_Position = new QLabel(mWebView);
lab_Position->setFixedSize(300, 30);
lab_Position->setAlignment(Qt::AlignRight);
lab_Position->move(660, 630);
mNetWorkComboBox = new QComboBox(this);
mNetWorkComboBox->setFixedSize(200, 40);
mNetWorkComboBox->addItem(tr("在线地图"), 0);
mNetWorkComboBox->addItem(tr("离线地图"), 1);
mNetWorkComboBox->setStyleSheet("QComboBox{combobox-popup:0;}");
QObject::connect(mNetWorkComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(slotNetWorkIndexChanged(int)));
mMapTypeComboBox = new QComboBox(this);
mMapTypeComboBox->setFixedSize(200, 40);
mMapTypeComboBox->addItem(tr("街道地图"), 0);
mMapTypeComboBox->addItem(tr("卫星地图"), 1);
mMapTypeComboBox->setStyleSheet("QComboBox{combobox-popup:0;}");
QObject::connect(mMapTypeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(slotMapTypeIndexChanged(int)));
lab_Long = new QLabel(this);
lab_Long->setFixedSize(40, 40);
lab_Long->setText(tr("经度:"));
lab_Lat = new QLabel(this);
lab_Lat->setFixedSize(40, 40);
lab_Lat->setText(tr("纬度:"));
lineEdit_Longitude = new QLineEdit(this);
lineEdit_Longitude->setFixedSize(140, 40);
lineEdit_Longitude->setText(tr("116.468278"));
lineEdit_Latitude = new QLineEdit(this);
lineEdit_Latitude->setFixedSize(140, 40);
lineEdit_Latitude->setText(tr("39.922965"));
btn_Search = new QPushButton(this);
btn_Search->setFixedSize(200, 40);
btn_Search->setText(tr("查询坐标"));
QObject::connect(btn_Search, SIGNAL(clicked()), this, SLOT(onbtnSearchclicked()));
btn_AddPoint = new QPushButton(this);
btn_AddPoint->setFixedSize(200, 40);
btn_AddPoint->setText(tr("添加坐标"));
QObject::connect(btn_AddPoint, SIGNAL(clicked()), this, SLOT(onbtnAddPointclicked()));
mLeftLayout = new QVBoxLayout();
mLeftLayout->addWidget(mWebView);
mLeftLayout->setSpacing(0);
mLeftLayout->setMargin(0);
mRightLayout = new QGridLayout();
mRightLayout->addWidget(mNetWorkComboBox, 0, 0, 1, 0);
mRightLayout->addWidget(mMapTypeComboBox, 1, 0, 1, 0);
mRightLayout->addWidget(lab_Long, 2, 0);
mRightLayout->addWidget(lab_Lat, 3, 0);
mRightLayout->addWidget(lineEdit_Longitude, 2, 1);
mRightLayout->addWidget(lineEdit_Latitude, 3, 1);
mRightLayout->addWidget(btn_Search, 4, 0, 1, 0);
mRightLayout->addWidget(btn_AddPoint, 5, 0, 1, 0);
mRightLayout->setRowStretch(6, 1);
mRightLayout->setSpacing(20);
mRightLayout->setMargin(20);
mMainLayout = new QHBoxLayout(this);
mMainLayout->addLayout(mLeftLayout);
mMainLayout->addLayout(mRightLayout);
mMainLayout->setSpacing(0);
mMainLayout->setMargin(0);
slotNetWorkIndexChanged(0);
slotMapTypeIndexChanged(0);
}
MyMainWindow::~MyMainWindow()
{
}
void MyMainWindow::onbtnSearchclicked()
{
QString strLongitude = lineEdit_Longitude->text();
QString strLatitude = lineEdit_Latitude->text();
setCoordinate(strLongitude, strLatitude);
}
void MyMainWindow::onbtnAddPointclicked()
{
QString strLongitude = lineEdit_Longitude->text();
QString strLatitude = lineEdit_Latitude->text();
addCoordinate(strLongitude, strLatitude);
}
void MyMainWindow::slotNetWorkIndexChanged(int id)
{
QString strMapPath = "file:///" + QCoreApplication::applicationDirPath();
switch (id) {
case 0:
strMapPath += "/BaiduOnline/BaiduOnlineMap.html";
mWebPage->load(QUrl(strMapPath));
qDebug() << "online map";
break;
case 1:
strMapPath += "/BaiduOffline/BaiduOfflineMap.html";
mWebPage->load(QUrl(strMapPath));
qDebug() << "offline map";
break;
default:
break;
}
mMapTypeComboBox->setCurrentIndex(0);
}
void MyMainWindow::slotMapTypeIndexChanged(int id)
{
switch (id) {
case 0:
mWebView->page()->runJavaScript(QString("showStreetMap()"));
break;
case 1:
mWebView->page()->runJavaScript(QString("showSatelliteMap()"));
break;
default:
break;
}
}
void MyMainWindow::getCoordinate(QString lon, QString lat)
{
lab_Position->setText(tr("经度:%1° 纬度:%2°").arg(lon).arg(lat));
}
void MyMainWindow::setCoordinate(QString lon,QString lat)
{
QString strMessage = QString("showAddress(\"%1\",\"%2\")").arg(lon).arg(lat);
mWebView->page()->runJavaScript(strMessage);
}
void MyMainWindow::addCoordinate(QString lon, QString lat)
{
QString strMessage = QString("addAddress(\"%1\",\"%2\")").arg(lon).arg(lat);
mWebView->page()->runJavaScript(strMessage);
}
void MyMainWindow::showInfoWindow(QString lon, QString lat)
{
QMessageBox::information(this, tr("坐标信息"), tr("经度:%1° 纬度:%2°").arg(lon).arg(lat));
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
嵌入式Qt实现百度在线地图与离线地图,利用QWebEngine实现,其中包含Qt与js通信技术,如需使用QWebKit实现,方法逻辑类似。功能包含:离线与在线切换,街道与卫星地图切换,坐标查找,添加坐标。其它功能后续更新,适合嵌入式Qt地图开发初学者参考。另附地图下载工具:全能地图下载器(未注册,下载后的图片会带有水印,可作学习利用),谢谢支持!
资源推荐
资源详情
资源评论
收起资源包目录
Qt实现的百度在线地图与离线地图(利用QWebEngine实现) (923个子文件)
MyMainWindow.cpp 5KB
main.cpp 168B
bmap.css 8KB
closedhand.cur 326B
openhand.cur 326B
mapctrls1d3.gif 899B
iw_close1d3.gif 73B
iw_plus1d3.gif 59B
blank.gif 49B
MyMainWindow.h 1KB
BaiduOnlineMap.html 4KB
BaiduOfflineMap.html 3KB
BaiduOnlineMap.html~ 4KB
BaiduOfflineMap.html~ 3KB
589.jpg 26KB
590.jpg 25KB
590.jpg 25KB
2367.jpg 25KB
588.jpg 25KB
2360.jpg 24KB
295.jpg 24KB
1178.jpg 24KB
1177.jpg 24KB
294.jpg 24KB
2357.jpg 24KB
2365.jpg 24KB
2366.jpg 24KB
1183.jpg 24KB
2362.jpg 24KB
1178.jpg 24KB
2353.jpg 24KB
2361.jpg 24KB
295.jpg 24KB
2362.jpg 24KB
1182.jpg 24KB
1174.jpg 24KB
1179.jpg 24KB
2361.jpg 24KB
2352.jpg 24KB
2352.jpg 24KB
2359.jpg 24KB
1180.jpg 24KB
1176.jpg 24KB
2355.jpg 24KB
1181.jpg 24KB
1180.jpg 24KB
1180.jpg 24KB
2360.jpg 24KB
2353.jpg 24KB
2362.jpg 23KB
589.jpg 23KB
2358.jpg 23KB
1176.jpg 23KB
1178.jpg 23KB
2360.jpg 23KB
2355.jpg 23KB
587.jpg 23KB
2354.jpg 23KB
1179.jpg 23KB
2357.jpg 23KB
1182.jpg 23KB
293.jpg 23KB
2357.jpg 23KB
2357.jpg 23KB
2355.jpg 23KB
2356.jpg 23KB
2360.jpg 23KB
294.jpg 23KB
1180.jpg 23KB
2353.jpg 23KB
147.jpg 23KB
2357.jpg 23KB
1176.jpg 23KB
1178.jpg 23KB
2352.jpg 23KB
1177.jpg 23KB
2361.jpg 23KB
2358.jpg 23KB
2352.jpg 23KB
2354.jpg 23KB
2359.jpg 23KB
2361.jpg 23KB
2360.jpg 23KB
2355.jpg 23KB
591.jpg 23KB
2352.jpg 23KB
2351.jpg 23KB
1178.jpg 23KB
2361.jpg 23KB
2361.jpg 23KB
2356.jpg 23KB
2357.jpg 23KB
296.jpg 23KB
2356.jpg 23KB
2364.jpg 23KB
2360.jpg 23KB
2352.jpg 23KB
2351.jpg 23KB
1181.jpg 23KB
2356.jpg 23KB
共 923 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10
资源评论
- 河上七月2022-11-24运行时报很多错,显示不出地图,无法正常使用。不知道是不是百度地图API更新了导致的 #运行出错
- Novessel2023-11-14根本不能打开
weixin_39404844
- 粉丝: 2
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- CVE-2019-0708漏洞检测与利用工具
- STM32单片机FPGA毕设电路原理论文报告利用c8051f020系列单片机实现智能仪器开发
- STM32单片机FPGA毕设电路原理论文报告利用8位单片机实现与Internet网络通信应用研究
- STM32单片机FPGA毕设电路原理论文报告利用80C196单片机测量三相异步电动机功率因数
- STM32单片机FPGA毕设电路原理论文报告力学传感器与单片机的接口设计
- p107-u07FLT2.wav
- STM32单片机FPGA毕设电路原理论文报告雷达幅频特性测试仪的智能化研究
- STM32单片机FPGA毕设电路原理论文报告可组网电子温湿度测量仪的设计与实现
- STM32单片机FPGA毕设电路原理论文报告可在单片机上实现的语音混沌保密通信方法
- STM32单片机FPGA毕设电路原理论文报告可实现的基于MCS51单片机的恒温控制系统的设计
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功