首页| 论坛| 消息

标题:不断迭代十几年/终于修成正果/超强悍地图组件/满足各种场景需求/支持天地图百度地图高德地图谷歌地图等
作者:liudianwu
日期:2025-06-20 08:34
内容:

## 一、前言说明
这个地图组件前前后后写了十几年,是真没想到,最开始仅仅是搞个简单的百度地图的js交互,能显示个地图和设备点,主要用在视频监控系统上展示摄像头点位,后面慢慢的有个无人机监控系统要用,需要显示无人机的轨迹,于是又加入了轨迹显示的功能,有了轨迹呢又需要轨迹回放,最开始做的在线地图,后面用户实际场景需求还需要支持离线,于是又做了瓦片离线地图下载。以为这就结束了?还差得远呢,随着百度地图和高德地图慢慢的收费了,现在大家都转向国家队的天地图,于是彻底花了半年多时间重构这个地图组件,最大发挥C++的继承多态优势,搞了个地图基类,不同的具体实现采用继承方式,实现具体的函数即可,比如实现具体的添加标注点函数,然后依次实现了天地图、高德地图、腾讯地图、谷歌地图。做完这些地图的支持,以为就万能的了,其实还没有,比如有时候需要杂交,天地图的离线API加上谷歌地图的瓦片,后面又找了个通用的地图js库叫leaflet,也做了支持,这样利用通用的组件加载不同的瓦片地图。
地图组件基础功能都有了,高级功能也慢慢的增加了,那如何提供给用户可以方便快速的用起来,又是个大问题,所以必须给每个功能都要提供对应的调用示例,于是专门写了各种示例代码,随着实际现场的需求增加,又增加了高级绘图功能,专门提供了雷达模拟、航迹回放、轨迹规划等功能,这些都是在基础功能上做的二次开发,专门写了单独的类去实现的。
## 二、效果图

## 三、相关代码
1. 将core_map(地图组件)/core_webview(浏览器组件)这两个组件目录拷贝到你的项目目录,并在pro中填写引入代码加入到你的项目中。$$PWD/../表示上级目录。
```cpp
include ($$PWD/../core_map/core_map.pri)
include ($$PWD/../core_webview/core_webview.pri)
```
2. 在pro中启用地图内核,比如百度地图内核对应需要在pro文件中增加一行定义DEFINES += baidux,天地图内核对应 DEFINES += tianx。如果是vsqt环境,添加的位置大概在属性-》配置属性-》C/C++-》预处理器。
3. 引入头文件。
```cpp
#include "webview.h"
#include "maphelper.h"
#include "mapobjbase.h"
```
4. 新建一个窗体,上面放一个布局,推荐用表格布局 gridlayout,可以放多个浏览器控件。
5. 实例化浏览器类和地图类。
```cpp
// ..

回复 发表
主题 版块