QT5.12.9 百度离线地图
1.百度离线地图下载
使用斑马鱼百度地图下载工具:下载地址
选中要下载的区域进行下载
我这里只下载普通地图,在下载目录生成tiles目录,如果选择混合地图会生成三个目录,并将目录内容拷贝斑马鱼对应目录下。
将bmap-offline目录拷贝到QT工程目录下
2.创建网页文件baiduMap.htlm
直接使用斑马鱼下dome里的html文件,并注意修改路径,我的baiduMap.htlm文件和bmap-offline目录在同一目录下:
<script type="text/javascript" src="./bmap-offline/map3.0_init.js"></script><script type="text/javascript" src="./bmap-offline/map3.0.js"></script>
注意加上下面这行:
<script type="text/javascript" src="./qwebchannel.js"></script>
<!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="initial-scale=1.0, user-scalable=no" /><style type="text/css">body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}</style><!-- 百度地图3.0 离线API Begin --><script type="text/javascript" src="./bmap-offline/map3.0_init.js"></script><script type="text/javascript" src="./bmap-offline/map3.0.js"></script><!-- 百度地图3.0 End --><script type="text/javascript" src="./qwebchannel.js"></script><title>地图展示</title>
</head>
<body><div id="allmap"></div>
</body>
</html>
<script type="text/javascript">// 百度地图API功能var map = new BMap.Map("allmap"); // 创建Map实例map.centerAndZoom(new BMap.Point(113.812308,34.798292), 12); // 初始化地图,设置中心点坐标和地图级别//添加地图类型控件map.addControl(new BMap.MapTypeControl({mapTypes:[BMAP_NORMAL_MAP,BMAP_SATELLITE_MAP,BMAP_HYBRID_MAP]})); //离线不支持//map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放setTimeout(function(){layer.msg('鼠标滚轮缩放',{'offset':'b'});},1000);</script><script type="text/javascript" src="../demo.js"></script>
3.QT程序编写
我是在一个自建的弹窗类Screen中展示的地图
1.screen.cpp
#include "screen.h"
#include "ui_screen.h"#include <QGuiApplication>
#include <QScreen>
#pragma execution_character_set("utf-8")Screen::Screen(QWidget *parent) :QWidget(parent),ui(new Ui::Screen)
{ui->setupUi(this);init_ui();
}Screen::~Screen()
{delete ui;
}void Screen::init_ui()
{//设置全屏this->setWindowState(Qt::WindowMaximized);this->setWindowFlags(Qt::FramelessWindowHint);this->setStyleSheet("background-color:rgb(14,14,14)");mapBaidu = new BaiduMap();layFloor = new QGridLayout();setLayout(layFloor);layFloor->setColumnStretch(0,1);layFloor->setRowStretch(0,1);layFloor->addWidget(mapBaidu->map);}
2.screen.h
#ifndef SCREEN_H
#define SCREEN_H#include <QWidget>
#include <QGridLayout>
#include <QLabel>
#include <QPushButton>
#include <QDir>
#include <QWebEngineView>
#include <QGridLayout>
#include "baidumap.h"
namespace Ui {class Screen;
}class Screen : public QWidget
{Q_OBJECTpublic:explicit Screen(QWidget *parent = nullptr);~Screen();private:Ui::Screen *ui;private:BaiduMap *mapBaidu;QGridLayout *layFloor;void init_ui();
};#endif // SCREEN_H
地图类用于初始化地图及后期控制与地图的交互
3.baidumap.cpp
#include "baidumap.h"
#include <QDir>BaiduMap::BaiduMap()
{/*百度地图初始化*/map = new QWebEngineView();channel = new QWebChannel(this);QDir temDir("../E-governmentPlatform/baiduMap.html");QString absDir = temDir.absolutePath();QString filePath = "file:///" + absDir;map->page()->load(QUrl(filePath));map->resize(1000,1000);channel->registerObject(QString("baidu"),this);map->page()->setWebChannel(channel);
}
4.baidumap.h
#ifndef BAIDUMAP_H
#define BAIDUMAP_H#include <QObject>
#include <QWebEngineView>
#include <QWebChannel>
class BaiduMap : public QObject
{Q_OBJECT
public:QWebEngineView *map;BaiduMap();
private:QWebChannel *channel;
};#endif // BAIDUMAP_H
3. 运行效果
QT5.12.9 百度离线地图相关推荐
- QT实现加载百度离线地图
在Qt中加载百度地图需要用到网络浏览器,在此采用webEngine模块,然后用webchannel进行qt与HTML/JavaScript的交互. 需求描述:软件加载百度地图,用鼠标在地图上选点,并进 ...
- web百度离线地图开发(详细教程)2019
web百度离线地图开发(详细教程) 需求情景 主要参考 开发步骤 一.JS API文件下载 二.修改API文件 1.屏蔽ak验证 2.设置引用本地资源路径 3.下载本地资源 4.引用本地资源 三.加载 ...
- vue2+百度离线地图实现多车辆行驶动态轨迹
vue2+百度离线地图实现行驶多车辆动态轨迹 实现多多车辆实时轨迹监控,每个10秒监测一次接口,进行动态追加.(前端实现,如果数量庞大的车辆移动,很消耗性能) 百度离线地图引入方法查看: vue项目实 ...
- 百度离线地图示例之四:热力图
前言介绍: 主要是基于v3.0的API版本进行的离线,纯内网可操作,基本上实现了现有90%以上的功能点,能兼容jpg和png格式的瓦片图层,实现了原生和基于Vue两个版本(包含常用的55个示例),文末 ...
- 百度离线地图开发,node实现地图瓦片下载
最近有个Web项目要用离线地图,项目是在内网环境,找了很多资料,踩了很多坑,好在已经实现了,下面把资料整理一下. 首先是百度离线地图开发包,原文地址是http://www.xiaoguo123.com ...
- 如何用百度离线API调用百度离线地图
这里以广西南宁市为例,说明如何用百度离线API调用百度离线地图. 首先,点击视图左上方的地图类型按钮选择百度地图(如果没有该项请点击"更多"选项),然后在视图右上方选择广西省南宁市 ...
- 百度离线地图示例之三:矢量图
前言介绍: 主要是基于v3.0的API版本进行的离线,纯内网可操作,基本上实现了现有90%以上的功能点,能兼容jpg和png格式的瓦片图层,实现了原生和基于Vue两个版本(包含常用的55个示例),文末 ...
- 百度离线地图示例之二:测距
前言介绍: 主要是基于v3.0的API版本进行的离线,纯内网可操作,基本上实现了现有90%以上的功能点,能兼容jpg和png格式的瓦片图层,实现了原生和基于Vue两个版本(包含常用的55个示例),文末 ...
- 百度离线地图 —— 瓦片地图下载
百度离线地图使用 下载工具,工具在文末. 解压,打开文件夹,找到 BaiDuMapTile.exe 应用程序,双击打开,下载瓦片地图. 下载完之后,有一个maptile文件夹,就是所需区域的瓦片地图 ...
最新文章
- (备忘)Java数据类型中String、Integer、int相互间的转换
- cv2.circle函数
- IDEA下maven项目Plugins和Dependencies红线
- 服务端的第五次课程:安全,认证,授权
- dual mysql 获取序列_MySQL获取周、月、天日期,生成排序号
- 更快学习 JavaScript的6个思维技巧
- openvswitch dpdk
- java 实现二分法
- 捐赠3亿元驰援疫情后,腾讯再出2亿元发起“战疫开发者公益联盟”
- JQuery Easyui/TopJUI 多表头创建
- 李宏毅机器学习之Deep Learning简介
- 华为a199升级android,华为A199(Ascend G710 电信版)救砖教程 救砖包 刷回官方系统支持OTA升级...
- 强化学习DRL--策略学习(Actor-Critic)
- iCloud如何只清理本地缓存而不删除云端文件
- Mysql(using temporary 与 using filesort)
- saf java_Android SAF实现外置SD卡的写入(JAVA层与JNI层hook)
- css实现聊天气泡对话框
- python实现生成word文档并转为pdf
- java中反三角函数怎么写,Java 数学三角函数正弦、余弦、正切以及反正弦、反余弦、反正切函数的使用...
- 屠蛟之路_蛟灵岛战役(上)_SixthDay
热门文章
- 发现一款国产PCB设计软件,还可以在线网页设计。立创
- jpa查询异常InvalidDataAccessApiUsageException
- 骁龙7nm旗舰来也!这一点终追上苹果/华为
- C# dotnet core TCP NAT UDP P2P 穿透 小引
- 数字化时代,奢侈品不在“高冷”
- Ear Recognition: More Than a Survey
- 4.3 lambda函数
- 如何在电脑资源管理器中删除华为手机助手以及其他顽固的图标
- 如何将MP3文件转成OGG?
- 理解box-sizing属性border-box,content-box