这才是地图控件该有的样子/不依赖js和qml/纯古法原创自研/纯代码绘制/最新版含泪发布
一、前言说明搞地图开发很多年最初用的htmljs的方式也就是网页版本的地图比如百度地图高德地图官方都提供了js的使用说明在Qt这边套个浏览器控件加载网页然后执行js交互即可优点是快速难度低如果只是显示地图的话然后显示几个设备点位还是非常简单的甚至都不需要从执行的js中回调拿到结果缺点是必须依赖浏览器控件而我们知道mingw的qt后面都是没有这个控件的必须用第三方的比如cef或者miniblink而cef巨大为此引入一个这个庞大的库也不好编译而且还要区分不同的编译器比如mingw、msvc、gcc都需要对应编译好的库为此当时还花了不少的精力专门封装了一个webview组件自适应兼容各种编译器调用对应的浏览器控件。这套地图组件业发展了N多用户毕竟上手快。后面慢慢的发展到现在百度地图开始收费了高德也是需要增加天地图以及其他的地图总归用起来越发鸡肋尤其是性能这块web的性能再怎么牛逼也不可能超越本地二进制程序的比如同时绘制几千条飞行轨迹web最多几百条就卡成屎极其的糟糕。后面打算考虑上qml的qtlocation自带了地图组件但是也是需要每一种不同的地图都需要对应的插件代码而且不少的bug而且只要是qml在一些低配的嵌入式环境基本上用不了底层也完全受限于qml自身的发展或者后期变成gpl模块那也歇菜。总之林林总总经过深思熟虑决定用自己最擅长的qwidget的painter大法纯代码绘制来实现地图控件后期要在上面绘制任意图形都是分分钟的事情而无论是js还是qml的地图组件要实现非常困难。经过了一年多的持续迭代有过十几个大版本更新今天总算是做的比较完美了功能齐全性能爆表原创轻量级核心代码5000行整体代码10000行架构漂亮注释详细拓展方便容易学习适合各种初学者和进阶者方便二次开发。支持任意Qt版本、任意系统、任意编译器包括嵌入式linux和各种国产电脑环境。全部原创自研古法编程不含任何AI代码持续迭代更新商业级别、品质保证。二、效果图三、相关代码将core_mapwidget目录拷贝到你的项目目录并在pro中填写引入代码加入到你的项目中。$$PWD/…/表示上级目录。include($$PWD/../core_mapwidget/core_mapwidget.pri)引入头文件编写代码。#includemapwidget.h//创建地图控件MapWidget w;//设置瓦片源头w.setTileSource(TileSource_Tian);//设置瓦片类型w.setTileType(TileType_Satellite);//设置离线地图//w.setOffline(true);//设置瓦片目录//w.setOfflinePath(./maptian);//加载地图w.load();更详细的接口参考mapwidget.h头文件。四、相关地址国内站点https://gitee.com/feiyangqingyun国际站点https://github.com/feiyangqingyun个人作品https://blog.csdn.net/feiyangqingyun/article/details/97565652文件地址https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码o05q 文件名bin_mapwidget.zip五、功能特点支持各种地图源包括天地图、高德地图、腾讯地图、谷歌地图、微软地图、ArcGis、OpenStreet、360地图等。同时支持WGS-84地球坐标系和GCJ-02火星坐标系如果是天地图、谷歌地图自动应用WGS-84坐标系如果是高德地图、腾讯地图自动应用GCJ-02坐标系。也可以主动设置在WGS-84坐标系加载高德地图内部会自动处理坐标偏移。同时支持默卡托投影和经纬度投影比如天地图的地图源可以是默卡托投影或者经纬度投影。每一种地图源都支持在线和离线两种场景需求可以自定义在线瓦片地址格式和离线瓦片地址格式。多线程下载和加载瓦片图片文件多线程绘制自动缓存瓦片文件。在线模式下可以开启是否缓存文件指定缓存路径将下载的瓦片文件存放到本地默认优先从缓存文件查找如果存在缓存文件则加载缓存文件不存在则联网下载。可以任意拖曳地图鼠标滚轮放大和缩小地图以鼠标所在位置作为缩放中心点提供缩放控件手动单击进行操作支持鼠标左键双击放大和右键双击缩小。多图层机制支持多个瓦片叠加图层和图形绘制图层全部采用双缓冲技术所有的图形和瓦片全部绘制到一个图片文件上最终再将图片文件绘制到地图控件。不可见区域的图层包括覆盖物不会触发绘制最大程度降低CPU占用。动态图层机制瓦片图层和图形图层分离图形图层不更新的情况下动态更新底图瓦片图层任意切换更新多个瓦片图层。无需重新加载整个地图。预加载机制默认绘制的图层大小以当前区域往四周放大一倍这样在鼠标拖动和缩放的时候不会看到明显的加载过程因为已经提前预加载好了体验友好。内置了多种图形覆盖物包括坐标点、纯文本、标注点、折线条、多边形、矩形、圆形、雷达、点聚合、热力图等可以设置边框颜色粗细、填充颜色和透明度等众多参数。标注点支持旋转角度和提示文本其中提示文本可以设置在标注点的相对位置标注点图片支持gif动图可以动态切换静态图和动图。标注点和提示文本可以设置相对位置位置包括左侧、右侧、上侧、下侧、中间、左上角、右上角、左下角、右下角。标注点默认按照底部居中对齐一般圆形图标可以设置中心点对齐。标注点提示文本可设置背景颜色透明度、颜色边框和粗细支持换行和多行文字。所有的图形可以动态更新前景色、颜色粗细、背景颜色、颜色透明度等。支持删除单个图形、删除一种类型的图形、删除所有图形、隐藏单个或者所有图形等。支持动态绘制各种图形开启后直接在地图上鼠标按下绘制鼠标右键结束绘制非常方便快捷。在对应图形区域鼠标按下发出图形单击信号精准识别单击区域比如折线以鼠标在折线条上作为判断依据多边形区域以鼠标在整个多边形区域内为准而不是以矩形区域包括圆形也是以圆形内部为准。可以动态启动禁用比例尺、十字线、缩放控件、地图拖曳、键盘操作、滚轮缩放、双击缩放、鼠标追踪等特性。可以任意指定经纬度区域进行瓦片拼接保存成图片文件也可以直接对整个可视区域或者缓存区域的地图图片文件保存。支持任意多边形轮廓保存成图片比如某个行政区的瓦片保存。图形可以动态设置zindex层叠顺序值越大越显示在前面内部维护着一个zindex表默认按照添加的先后顺序增加后面添加的显示在前面主动设置后按照设置的zindex来绘制。支持将QWidget对象作为覆盖物添加到地图控件中跟随地图移动位置极大提高灵活性比如可以将自定义控件直接作为地图控件的子对象加入进去。支持测距和测面积动态绘制多边形区域实时动态调整位置和点坐标自动重新计算可以关闭单个测距测面的图形。内置MarkerMove轨迹移动类支持历史轨迹数据回放和实时轨迹移动可设置图标、轨迹线的颜色和粗细、移动速度、移动间隔、平滑移动等支持多条轨迹线条同时移动。内置MarkerLine航迹规划类支持动态添加航迹点显示对应箭头可以动态拖曳调整航迹点的位置选中点高亮显示。大量使用按需绘制机制包括内部提供合理的默认值来触发绘制也可以手动传入参数指定是否需要立即绘制比如删除了某个覆盖物有些频繁的操作可以不指定立即绘制等操作完成后再统一一起绘制效率更高。默认开启内存瓦片机制所有加载过的瓦片文件都存储在内存中下次再次绘制直接从内存取出来绘制既不需要从联网获取也不需要从缓存文件获取直接内存取出来绘制响应迅速效率最高体验最佳。支持批量添加覆盖物比如几万个标注点和圆形都是瞬间完成绘制相比web网页的方式性能提升百倍以上。支持街道图、卫星图、混合图、路网图等各种图层可以任意叠加N个图层甚至杂交不同地图厂家的瓦片文件。内置缩放动画效果在缩放的时候先截取上一个地图画面作为缩放动画基准图片逐步过渡到下一个层级。内置电子放大机制瓦片图片不存在的时候优先获取该区域上一图层的瓦片按照规则裁切图片缩放填充最大支持两级图层放大在线和离线模式都支持电子放大。在线情况下主动获取上一级的瓦片离线情况下主动本地文件查找。支持双指触摸缩放在移动端或者任何可以触摸的地方双指拉大放大地图双指聚拢缩小地图平滑动画过渡缩放。提供离线地图下载模块多线程高速并发下载可框选指定区域下载瓦片可指定任意级别下载。提供高程海拔显示模块离线识别高程海拔数据传入经纬度即可无需引入任何第三方模块。纯QWidget绘制非qml也非web不依赖qml或者浏览器控件没有任何第三方库依赖支持极低性能的嵌入式环境。原创轻量级核心代码5000行整体代码10000行架构漂亮注释详细拓展方便容易学习适合各种初学者和进阶者方便二次开发。支持任意Qt版本、任意系统、任意编译器包括嵌入式linux和各种国产电脑环境。全部原创自研古法编程不含任何AI代码持续迭代更新商业级别、品质保证。

相关新闻

AI时代下的OPT单人研发模式研究与实践

AI时代下的OPT单人研发模式研究与实践

核心名词释义:OPT(One-Person Team)单人研发模式,是AI赋能下的新型研发范式,指研发人员依托AI工具、云原生基建与自动化工程底座,独立完成需求分析、架构设计、编码开发、测试验证、部署上线、运维迭代的全…

2026/10/21 13:03:14 阅读更多 →
【51单片机LCD1602测量频率显示】2023-6-2

【51单片机LCD1602测量频率显示】2023-6-2

缘由https://ask.csdn.net/questions/7956154/54223199 利用8位数码管显示来自信号发生器的方波频率,频率的测量范围是100到2000HZ,要求信号发生器的频率改变时,实验显示的频率也随之改变,求完整代码 #include "reg52.h&quo…

2026/10/25 10:00:00 阅读更多 →
怎么测品牌在AI里的曝光?从原始回答到指标的数据工程方案

怎么测品牌在AI里的曝光?从原始回答到指标的数据工程方案

具体会崩在三个地方: 同一个问题不同版本混在一起。 本月的问法和上个月不同,但Excel里看不出哪个回答对应哪个版本。提及、推荐、位次和引用用了不同分母。 提到品牌的样本算提及率,被推荐的样本算推荐率,但两者分母不同——Exce…

2026/10/24 0:53:12 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/25 11:19:54 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/24 17:47:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/24 18:34:36 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/25 10:02:42 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/25 3:12:30 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/24 21:09:59 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 10:02:43 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 13:21:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 7:47:32 阅读更多 →