#include "MyMainWindow.h"
#include <QCoreApplication>
#include <QDebug>
MyMainWindow::MyMainWindow(QWidget *parent)
: QWidget(parent)
{
this->resize(1200, 660);
// this->resize(1920, 1080);
// this->setWindowFlags(Qt::FramelessWindowHint);
this->setWindowTitle(tr("MyWebKitView"));
mWebView = new QWebView(this);
mWebView->setFixedSize(width() - 240, height());
mWebView->setContentsMargins(0,0,0,0);
mWebView->setTextSizeMultiplier(1);//设置网页字体大小
QObject::connect(mWebView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),
this, SLOT(slotPopulateJavaScriptWindowObject()));
QWebSettings *settings = mWebView->settings();
settings->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
QWebInspector *inspector = new QWebInspector(this);
inspector->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::Dialog);
inspector->setMinimumSize(300, 800);
inspector->setPage(mWebView->page());
inspector->show();
lab_Position = new QLabel(mWebView);
lab_Position->setFixedSize(300, 30);
lab_Position->setAlignment(Qt::AlignRight);
lab_Position->move(width() - 300 - 240, height() - 30);
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";
mWebView->load(QUrl(strMapPath));
qDebug() << "online map";
break;
case 1:
strMapPath += "/BaiduOffline/BaiduOfflineMap.html";
mWebView->load(QUrl(strMapPath));
qDebug() << "offline map";
break;
default:
break;
}
mMapTypeComboBox->setCurrentIndex(0);
}
void MyMainWindow::slotMapTypeIndexChanged(int id)
{
switch (id) {
case 0:
mWebView->page()->mainFrame()->evaluateJavaScript(QString("showStreetMap()"));
break;
case 1:
mWebView->page()->mainFrame()->evaluateJavaScript(QString("showSatelliteMap()"));
break;
default:
break;
}
}
void MyMainWindow::slotPopulateJavaScriptWindowObject()
{
mWebView->page()->mainFrame()->addToJavaScriptWindowObject("interactObj", this);
}
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()->mainFrame()->evaluateJavaScript(strMessage);
}
void MyMainWindow::addCoordinate(QString lon, QString lat)
{
QString strMessage = QString("addAddress(\"%1\",\"%2\")").arg(lon).arg(lat);
mWebView->page()->mainFrame()->evaluateJavaScript(strMessage);
}
void MyMainWindow::showInfoWindow(QString lon, QString lat)
{
QMessageBox::information(this, tr("坐标信息"), tr("经度:%1° 纬度:%2°").arg(lon).arg(lat));
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
更新webkit离线地图,离线地图API包含v1.0和v1.3,嵌入式Qt实现百度在线地图与离线地图,利用QWebKit实现。功能包含:离线与在线切换,街道与卫星地图切换,坐标查找,添加坐标。其它功能后续更新,适合嵌入式Qt地图开发初学者参考。另附地图下载工具:全能地图下载器(未注册,下载后的图片会带有水印,可作学习利用),谢谢支持!
资源推荐
资源详情
资源评论
收起资源包目录
Qt实现的百度在线地图与离线地图(利用QWebKit实现) (1836个子文件)
MyMainWindow.cpp 6KB
main.cpp 168B
bmap.css 8KB
bmap.css 8KB
closedhand.cur 326B
openhand.cur 326B
closedhand.cur 326B
openhand.cur 326B
mapctrls1d3.gif 899B
mapctrls1d3.gif 899B
iw_close1d3.gif 73B
iw_close1d3.gif 73B
iw_plus1d3.gif 59B
iw_plus1d3.gif 59B
blank.gif 49B
blank.gif 49B
MyMainWindow.h 1KB
BaiduOfflineMap.html 4KB
BaiduOnlineMap.html 4KB
BaiduOnlineMap.html 3KB
BaiduOfflineMap.html 3KB
BaiduOfflineMap.html~ 4KB
BaiduOnlineMap.html~ 4KB
BaiduOnlineMap.html~ 3KB
BaiduOfflineMap.html~ 3KB
589.jpg 26KB
589.jpg 26KB
590.jpg 25KB
590.jpg 25KB
590.jpg 25KB
590.jpg 25KB
2367.jpg 25KB
2367.jpg 25KB
588.jpg 25KB
588.jpg 25KB
2360.jpg 24KB
2360.jpg 24KB
295.jpg 24KB
295.jpg 24KB
1178.jpg 24KB
1178.jpg 24KB
1177.jpg 24KB
1177.jpg 24KB
294.jpg 24KB
294.jpg 24KB
2357.jpg 24KB
2357.jpg 24KB
2365.jpg 24KB
2365.jpg 24KB
2366.jpg 24KB
2366.jpg 24KB
1183.jpg 24KB
1183.jpg 24KB
2362.jpg 24KB
2362.jpg 24KB
1178.jpg 24KB
1178.jpg 24KB
2353.jpg 24KB
2353.jpg 24KB
2361.jpg 24KB
2361.jpg 24KB
295.jpg 24KB
295.jpg 24KB
2362.jpg 24KB
2362.jpg 24KB
1182.jpg 24KB
1182.jpg 24KB
1174.jpg 24KB
1174.jpg 24KB
1179.jpg 24KB
1179.jpg 24KB
2361.jpg 24KB
2361.jpg 24KB
2352.jpg 24KB
2352.jpg 24KB
2352.jpg 24KB
2352.jpg 24KB
2359.jpg 24KB
2359.jpg 24KB
1180.jpg 24KB
1180.jpg 24KB
1176.jpg 24KB
1176.jpg 24KB
2355.jpg 24KB
2355.jpg 24KB
1181.jpg 24KB
1181.jpg 24KB
1180.jpg 24KB
1180.jpg 24KB
1180.jpg 24KB
1180.jpg 24KB
2360.jpg 24KB
2360.jpg 24KB
2353.jpg 24KB
2353.jpg 24KB
2362.jpg 23KB
2362.jpg 23KB
589.jpg 23KB
589.jpg 23KB
2358.jpg 23KB
共 1836 条
- 1
- 2
- 3
- 4
- 5
- 6
- 19
资源评论
T.先森
- 粉丝: 2
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Integrated-Energy-Systems-with-CAES-(注释完全,可直接运行)
- PDF为英语文本绘制热区(DEMO)
- 4.22.cpp
- 基于Transformer和Bert的close domain抽取式问答系统构建的智能聊天机器人项目源代码
- 基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计(注释完全,可直接运行)(文档加Matlab源码)
- 2023各大软件技术峰会演进资料汇总(PPT),资料难得
- 基于混沌集成决策树的电能质量复合扰动识别(注释完全,可直接运行)(文档加Matlab源码)
- 航空公司如何成功实现数字化转型英文版.rar
- RTL8309N-8口交换机评估板Cadence设计硬件(原理图+PCB)及PDF原理图+RTL8309N技术规格书
- 基于JAVA的打飞机游戏设计(程序).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功