
Qt/C++地图软件开发
文章平均质量分 91
以Qt作为开发环境,主要讲解分析用Qt编写的一系列地图相关的模块内容,开放核心代码,图文并茂。
feiyangqingyun
欢迎关注公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Qt/C++编写地图综合应用文章导航
文章链接1-闪烁点图https://qtchina.blog.csdn.net/article/details/1053102742-迁徙图https://qtchina.blog.csdn.net/article/details/1053220853-省市区域图https://qtchina.blog.csdn.net/article/details/1053384874-仪表盘https://qtchina.blog.csdn.net/article/det...原创 2021-11-15 11:23:39 · 2593 阅读 · 0 评论 -
Qt/C++地图路径规划/公交路线/自驾路线/骑行路线/步行路线/获取路线轨迹点
本文介绍了基于Qt开发的地图路径规划功能实现。系统支持百度、高德、天地图等多地图内核,提供在线/离线两种模式,包含丰富的交互功能。核心功能包括:1) 支持公交、驾车、步行、骑行四种路径规划方式;2) 实现地图标注、区域搜索、图形绘制等可视化操作;3) 提供坐标转换、行政区划查询等实用工具。代码示例展示了路径查询和绘图的实现逻辑,通过信号槽机制与前端交互。项目已在GitHub和Gitee开源,提供完整的功能演示和下载资源。该系统适用于导航、物流等需要地图服务的应用场景,具有交互友好、功能全面的特点。原创 2025-08-05 09:43:40 · 719 阅读 · 0 评论 -
Qt地图gis软件开发经验总结/为什么建议选用天地图
搞地图相关软件或者功能开发很多年,最开始搞得是百度地图,把官网对应的API接口都实现了一遍,好用肯定是好用,但是缺点也挺多,最大缺点就是坐标系需要转换,现在很多的设备传过来的要么是地球坐标系,要么是国家标准的坐标系,而百度地图是自己的坐标系,在国标上又加了自己的偏移,搞得很不兼容,比如其他地图的瓦片也不兼容百度地图,所以杂交起来也难搞,以上缺点也都能将就着用,现在最大缺点来了,就是收费了,直接在瓦片图片上显示未授权字样,而且收费巨贵,个人完全无法承担。原创 2025-06-29 08:21:53 · 1494 阅读 · 0 评论 -
Qt/C++地图开发/高级绘图/航线规划和模拟/动态标注轨迹线/带序号和方向箭头指示
本文介绍了高级绘图模块中航迹规划功能的实现。该功能基于底层地图组件二次开发,允许用户在地图上点击添加有序标注点,自动生成带方向箭头的航线。关键技术包括:1)通过计算两点角度自动调整箭头方向;2)支持拖拽标注点实时更新航线和箭头;3)提供标注点序号显示、选中高亮、删除重排等功能。通过封装通用接口,该方案可适配多种地图组件,并采用事件监听机制实现交互响应。效果图展示了完整的航线规划界面,相关代码演示了坐标计算、箭头旋转、拖拽处理等核心逻辑。原创 2025-05-25 15:10:47 · 902 阅读 · 0 评论 -
Qt/C++搜索行政区边界和保存边界点到文件/离线加载行政区边界
文章摘要:本文介绍了如何通过多边形区域(polygon)绘制行政区划轮廓图,并动态加载行政区划数据。最初,边界点坐标文件被嵌入到JS文件中,但这种方式无法实现动态加载。随后,开发了一个JS函数,通过传入经纬度坐标集合来绘制行政区划,支持多个封闭区域(如飞地和海岛)。文章还提到,天地图的行政区划功能已从地图JS中移除,需通过HTTP请求获取数据,这种趋势使得地图功能更加专注。代码部分展示了如何通过HTTP请求获取行政区划数据并绘制多边形区域。最后,文章提供了相关地址和功能特点,包括支持多种地图内核、在线和离线原创 2025-05-23 08:59:26 · 790 阅读 · 0 评论 -
Qt/C++地图组件在视频监控系统中的应用/显示设备点/弹出视频画面/调整设备位置
监控系统中一般有很多的摄像头点位,除了在平面图中展示位置以外,有些工地和集团,在集中管理的地方,还希望在电子地图中展示,电子地图可以缩放和拖动,切换设备点自动放大高亮,地图自动移动到设备居中的位置,双击设备可以预览实时画面。设备的经纬度信息,在添加设备的时候有个默认的位置,真实的位置需要到电子地图这边调整,先选中设备,然后鼠标在地图上按下选择新的位置,新的经纬度坐标会显示在文本框中,然后单击更新设备按钮,此时会将最新的经纬度值更新到数据库,并重新加载设备。整个过程立即应用,无需重启。原创 2025-03-04 10:03:31 · 1213 阅读 · 0 评论 -
爆肝一个月/离线读取全国任意经纬度高程海拔值/无任何依赖/纯原创代码解析
做地图开发会遇到一个常规需求,就是获取当前经纬度对应的海拔高度,也叫做高程值,很遗憾各大地图厂商都未提供接口获取,可能是有明文规定,不能地图中提供对应的海拔高度值,于是需要另想他法,尽管谷歌地图在线的api接口是提供了海拔高度值,但是懂得都懂,国内哪里还能用谷歌地图?完全用不了啊,就算你开发者能用,99.99%的用户也是用不了,而且必须是在线,没有离线也不行。原创 2025-02-22 14:30:11 · 1157 阅读 · 0 评论 -
Qt/C++覆盖物的添加和获取信息/折线多边形矩形圆形/点聚合海量点
覆盖物一般包括标准点marker、折线polyline、多边形polygon、矩形rectangle、圆形circle等,这些功能在所有地图中都是支持的,有些地图对应的矩形使用多边形来实现,因为矩形也是多边形的一种。原创 2025-01-02 09:22:43 · 1253 阅读 · 0 评论 -
Qt/C++地图测距/显示不同线段的距离/拿到测距结果/测距结束信号
地图测距在地图组件中属于一个比较小众的功能,但是又不得不提供,有时候用户希望直接在地图上选点,测算距离,尤其是在一些军事领域用的比较多,测距功能提炼出来的共性就是,每一段都有距离,最后鼠标右键或者双击结束测距,然后发个信号传过来总的距离。一般地图厂家也都提供了对应的事件,比如百度地图的addpoint事件表示每次添加一段线条就触发,drawend事件表示测距完成。为了统一处理,统一定一个信号传出对应的测距过程和测距结束。原创 2024-12-16 11:09:55 · 1012 阅读 · 0 评论 -
Qt/C++离线读取全国任意经纬度高程海拔值/无任何依赖/纯原创代码解析
做地图开发会遇到一个常规需求,就是获取当前经纬度对应的海拔高度,也叫做高程值,很遗憾各大地图厂商都未提供接口获取,可能是有明文规定,不能地图中提供对应的海拔高度值,于是需要另想他法,尽管谷歌地图在线的api接口是提供了海拔高度值,但是懂得都懂,国内哪里还能用谷歌地图?完全用不了啊,就算你开发者能用,99.99%的用户也是用不了,而且必须是在线,没有离线也不行。原创 2024-12-09 08:45:48 · 1041 阅读 · 0 评论 -
Qt/C++离线地图的加载和交互/可以离线使用/百度和天地图离线/支持手机上运行
在地图应用中,有很多时候是需要断网环境中离线使用的,一般会采用两种做法,一种是只下载好离线瓦片地图,然后根据不同的缩放和经纬度坐标绘制瓦片。这种方式优点是任何地图都支持,只需要拿到瓦片即可,缺点是其他的接口都需要自己处理,比如覆盖物的绘制,工作量巨大,尽管Qt的qml部分提供了location模块用于这个处理,但是功能还不是很完善,而且不支持widget,对于只会widget的我来说,歇菜。原创 2024-11-21 08:54:49 · 2342 阅读 · 0 评论 -
Qt/C++地图高级绘图/指定唯一标识添加删除修改/动态显示和隐藏/支持天地图高德地图百度地图
已经有了最基础的接口用来添加覆盖物,而且还有通过进入覆盖物模式动态添加覆盖物的功能,为什么还要来个高级绘图?因为又有新的需求,给钱就搞,一点底线都没有。无论哪个地图厂家,提供的接口都是没有唯一标识参数的,也就类似于学号,这就是需要自己主动定一个属性用来存储唯一标识,这样方便后面删除和修改。比如之前的删除覆盖物,只能指定一种类型的覆盖物,指定圆形则删除所有圆形覆盖物,这样还是完全不够的,很多时候需要指定唯一标识来删除和修改。原创 2024-11-15 08:59:27 · 1187 阅读 · 0 评论 -
绞尽脑汁终于搞定/天地图标注点marker旋转/任意角度旋转/无需引入其他框架
在其他地图组件中,标注点marker都是可以设置旋转角度的,这个功能其实非常实用,比如飞机移动轨迹,就是需要旋转飞机头飞行,轮船轨迹移动也是,百度地图和腾讯地图是通过调用setRotation函数设置,高德地图是setAngle,唯独天地图没有提供对应接口,找遍了文档和源码,也没有找到对应函数实现,这下完蛋了,如果就应为这个功能而弃用天地图,那就非常的难受,毕竟天地图是目前开发下来最完美的方案,比如不收费,卫星图精度高,默认采用大地坐标系,和地球坐标系几乎无偏差,根本无需转换坐标,而且离线js开发包非常简单原创 2024-11-06 17:45:49 · 1548 阅读 · 0 评论 -
Qt/C++地图动态绘制折线多边形矩形圆形标注点/可编辑拖动调整大小和位置
无论哪一家的地图,都提供了调用函数绘制各种覆盖物,但是有时候的场景是希望进入添加覆盖物模式,然后每次在地图上按下都自动生成对应的覆盖物比如圆形,这样就不需要用户提前知道经纬度坐标等参数,而是让用户自己在地图上拾取即可,这样灵活性就极大的提高了。原创 2024-11-03 10:06:27 · 1241 阅读 · 0 评论 -
Qt/C++地图导航app/支持qml/手机运行/输入起点终点规划路径/模拟轨迹移动
搞Qt地图开发这块,随着研究的深入,用户的需求变化,最近又需要在手机上运行,由于本地图组件依赖浏览器控件,而手机安卓上的Qt并没有带qwebengine控件,怎么办呢,不断的努力验证下,发现Qt安卓上提供了webview控件可以加载网页,而webview在安卓上只能用qml,根据官方的文档描述,webview在win和linux系统中,依赖qwebengine模块,也就是底层其实就是使用的qwebengine模块,而在移动端手机端使用的本地浏览器组件,可行性搞定了以后就撸起袖子开干了。原创 2024-10-31 08:07:00 · 1576 阅读 · 0 评论 -
Qt/C++地图雷达扫描/动态扇形区域/标记线实时移动/轮船货轮动态轨迹/雷达模拟/跟随地图缩放
地图雷达扫描的需求场景也不少,很多人的做法是直接搞个覆盖层widget,在widget上绘制雷达,优缺点很明显,优点是性能高,毕竟直接在widget上绘制性能明显比js中绘制要高,缺点是要么动态计算经纬度坐标转屏幕坐标来实现跟随,要么固定的通过改变绘制的范围内容来跟随,但是总归使用场景有限,所以近期专门做了个直接调用地图的js函数接口来实现动态雷达扫描的效果,性能还是很不错的,50ms触发一次都是稳稳当当的。间隔可调,每次移动的步长也可调。原创 2024-10-28 10:10:37 · 1014 阅读 · 3 评论 -
Qt/C++路径轨迹回放/回放每个点信号/回放结束信号/拿到移动的坐标点经纬度
在使用百度地图的路书功能中,并没有提供移动的信号以及移动结束的信号,但是很多时候都期望拿到移动的哪里了以及移动结束的信号,以便做出对应的处理,比如结束后需要触发一些对应的操作。经过搜索发现很多人都有这个需求,需要在js文件中加上一点代码才行,也就是在start开始的时候传入两个回调函数movestep和moveend,在js文件对应移动标注点的地方触发这个回调,在移动到末尾的时候再去触发moveend信号,这个回调参数中可以带上对应的对象以及坐标经纬度值。原创 2024-10-24 14:04:34 · 1283 阅读 · 0 评论 -
Qt/C++动态启用地图功能/地图拖曳/键盘操作/滚轮缩放/双击放大/连续缩放等
地图组件为了方便用户的操作,一般会满足各种需求场景,比如用鼠标拖曳地图,实体键盘按键上下左右移动,鼠标滚轮缩放地图大小,双击放大地图,这些常规的操作可以极大的方便用户操作,问题是,有时候又是需要禁用某些功能,不然会引起一些误操作,比如双击放大功能,如果不禁用,在某些场景要求双击标注点做一些操作,而此时地图又放大了,导致结果不可预期,所以上述的功能最好做成可以动态启用禁用。原创 2024-10-16 09:50:43 · 958 阅读 · 0 评论 -
Qt/C++加载不同的地图控件/地图类型/缩放标尺/缩略图/比例尺/实时路况/全景视图等
在展示地图的时候,有些常规的操作,比如调整地图的缩放级别,切换到卫星图等,希望能够在地图上直接操作实现,于是就有了一堆地图控件,可以根据自己的需求动态的添加和删除,这样就更直接更快捷,而不是通过函数去设置。几乎每个地图厂家都提供了类似的控件,尽管命名可能有些差别,常见的地图控件有地图类型、缩放标尺、缩略图(也叫鹰眼视图)、比例尺、实时路况等。记得当初第一版的地图组件设计的时候,每个地图控件对应一个enable变量,在生成地图网页代码之前,设置好enable的值,然后根据这个值去决定要不要加入控件到地图中。原创 2024-10-10 15:36:30 · 1965 阅读 · 1 评论 -
Qt/C++如何选择使用哪一种地图内核/不同地图的优缺点/百度高德腾讯地图/天地图/谷歌地图
最近花了大半年时间,专门研究这个地图组件,几乎把各种地图的官网的手册翻了个遍,亲自写代码验证了一遍,各种API函数接口和功能全部实战一遍,然后从中提取共性,做出了基类,以及通用函数类,子类再对该地图特殊功能进行单独的处理。那么问题来了,这些地图各自有哪些优缺点呢?面对具体的实际需求应该怎么选?不同的地图内核有不同的优缺点,一般国内使用比较多的是百度地图、高德地图、天地图三种,谷歌由于需要翻墙才能使用,导致国内用户数很低。综合使用对比下来看,高德地图在api接口和文档示例方面最丰富的,应用场景也最全;原创 2024-09-29 08:01:02 · 1676 阅读 · 2 评论 -
Qt加载天地图离线api开发包/从官网趴地图js代码/费了九牛二虎之力终于搞定
网上关于如何趴天地图离线api文件的文章,只有少量的两三篇,而且几乎没有说全和说对,搞得评论也是一片懵逼,这里不行那你不行,思路可以借鉴就是。索性花了点时间,自己研究了如何从官网一步步趴下来js文件,最终所有离线能使用的功能全部搞定,也根本不会有http等访问的情况出现,彻底离线断网使用,加载本地瓦片速度超奇的快。为啥要天地图离线?百度离线不可以吗?而且网上几乎流传的都是百度地图的离线开发包,有2.0和3.0版本的,但是里面其实也不全,还有不少http访问的代码没有去除。原创 2024-09-17 19:49:13 · 2999 阅读 · 9 评论 -
全英文地图/天地图和谷歌瓦片地图杂交/设备分布和轨迹回放/无需翻墙离线使用
随着风云局势的剧烈变化,对我们搞软件开发的人员来说,影响也是越发明显,比如之前对美对欧的软件居多,现在慢慢的变成了对大鹅和中东以及非洲的居多,这两年明显问有没有俄语或者阿拉伯语的输入法的增多,这要是放在2019年以前,一年也遇不到一个人问这种需求场景的。原创 2024-09-08 08:06:13 · 2881 阅读 · 6 评论 -
Qt/C++百度地图/高德地图/天地图/腾讯地图/谷歌地图/加载绘图工具栏
在地图中提供一个绘图工具栏,可以便捷的在地图上添加各种覆盖物,比如折线、多边形、矩形、圆形等,然后可以获取这些覆盖物的路径以及中心点等属性。这里有几个小插曲,比如百度地图gl版本默认不提供这个功能,是通过引入第三方的开源的js文件来实现的。还有个惊喜就是天地图一开始也以为没有这个功能,翻遍了文档才发现提供了militarySymbols这个控件,非常强大,居然提供了几十种形状,而且有各种箭头形状,满足了更多的场景需求,说实话这点还是很惊讶的。原创 2024-09-03 08:18:45 · 1442 阅读 · 0 评论 -
Qt/C++地址转坐标/坐标转地址/逆地址解析/支持百度高德腾讯和天地图
地址和经纬度坐标转换的功能必须在线使用,一般用在导航需求上,比如用户输入起点地址和终点地址,查询路线后,显示对应的路线,而实际上各大地图厂家默认支持的是给定经纬度坐标来查询(百度地图支持传入地址),但是你让用户输入经纬度坐标是不可能的,他肯定不可能知道怎么去拿到这个坐标,所以一般都是要求用户输入实际的地址,然后程序转换成经纬度坐标,再调用函数传入两个坐标取查询路径。原创 2024-08-31 11:52:37 · 1667 阅读 · 0 评论 -
Qt/C++地图标注点的添加删除移动旋转/指定不同图标和动图/拿到单击信号
标注点在地图开发中是最常见的应用场景之一,比如在地图上需要显示设备的位置,基本上都是添加标注点,指定图片和尺寸已经经纬度坐标位置。这个功能在每种地图内核中都提供的,这个并没有任何难点,在这个功能点上最大难题或者说是设计细节就是,标注点该如何对齐,比如水滴形状的图标一般是底部居中对齐更美观,刚好水滴的头在指定的经纬度坐标上,整个图标位于正上方。还有一种情况是圆形的图标,这种最美观的方式是中间居中对齐,也就是图片的中心点在指定的经纬度坐标上,更符合实际的情况,如果说是底部,则看起来可能会很怪。原创 2024-08-18 17:36:55 · 1563 阅读 · 0 评论 -
Qt/C++地图坐标纠偏/地球坐标系/火星坐标系/百度坐标系/互相转换/离线函数
为什么需要地球坐标纠偏这个功能,因为国家安全需要,不允许使用国际标准的地球坐标系,也并不是咱们这边这样,很多国家都是这样处理的,就是本国的地图经纬度坐标都是按照国家标准来的,所以就需要一个转换。国内主要有三种坐标系,国际标准用的地球坐标系WGS-84,国家标准用的火星坐标系GCJ-02,百度地图用的百度坐标系BD-09,高德地图和腾讯地图用的都是国家标准坐标系,天地图用的大地坐标系,和国际标准坐标系几乎无偏差。原创 2024-08-15 08:36:49 · 1447 阅读 · 0 评论 -
Qt/C++地图轨迹回放/自定义图标/动态平滑移动/导入轨迹数据/支持各种地图包括天地图
这个轨迹回放的功能迭代过很多个版本,最初的版本是轨迹点的坐标每次都是删除折线再重新生成折线,后面发现有内存泄漏,地图js中并不会及时的释放没有用的对象,哪怕是用地图提供的clearoverlay的方法,也不会去释放,不知道是地图js没有处理好还是。第二个版本是先按需生成曲线对象,每次轨迹点更新后,就调用polyline对应的setpath方法去设置新的路径,这样如果只有一条路径,则只有一个折线对象,每次都是更新他的路径就好。最后不需要的时候再去删除这个折线就好,怎大大提升了效率,减轻了频繁分配内存的压力。原创 2024-08-12 17:10:25 · 1476 阅读 · 0 评论 -
Qt/C++最新地图组件发布/历时半年重构/同时支持各种地图内核/包括百度高德腾讯天地图
最近花了半年时间,专门重构了整个地图组件,之前写的比较粗糙,有点为了完成功能而做的,没有考虑太多拓展性和易用性。这套地图自检这几年大量的实际项目和用户使用下来,反馈了不少很好的建议和意见,经过这几年的整理,刚好趁着近期经济下行严重,抽出时间把整个地图组件重构一下,首要的任务就是搞个地图基类,然后子类分别实现不同地图的具体功能。原创 2024-08-06 19:45:01 · 2249 阅读 · 3 评论 -
Qt/C++编写地图综合应用60-覆盖物坐标和搜索
一、前言地图应用中有时候需要开启悬浮工具栏,用户可以直接在地图上绘制矩形、多边形、圆形、线条等,于是需要提供一个函数接口,能够获取到用户绘制的这些图形形状对应的信息。比如坐标点、圆形的中心点和半径、所有图形的路径Path坐标点集合,这些信息都是以经纬度坐标的形式。一般封装的类似功能的js函数一般有三种要求,第一种传入空值则表示找出所有覆盖物,第二种传入类型则找出所有该类型的覆盖物比如矩形,第三种传入对象名称则找出符合该名称的。从一堆覆盖物中找到符合指定类型的覆盖物,这个对于初学者是难点,可以通过map.g原创 2022-03-13 09:12:52 · 2654 阅读 · 0 评论 -
Qt/C++编写地图综合应用59-经纬度坐标纠偏
一、前言地图应用中都涉及到一个问题就是坐标纠偏的问题,这个问题的是因为根据地方规则保密性要求不允许地图厂商使用标准的GPS坐标,而是要用国家定义的偏移标准,或者在此基础上再做算法运算,所以这就出现了三种常规的坐标标准:GPS坐标(WGS-84,国际标准,谷歌地球软件,硬件GPS模块等)、中国坐标偏移标准(GCJ-02,谷歌地图、腾讯地图、高德地图等)、百度坐标偏移标准(BD-09,仅仅百度地图采用)。由于不允许其他坐标转换成GPS坐标,所以三种坐标互换就剩4种常用转换:GPS转百度、GPS转其他、百度转其原创 2022-03-09 19:06:44 · 1799 阅读 · 0 评论 -
Qt/C++编写地图综合应用58-兼容多浏览器内核
一、前言miniblink是一个追求极致小巧的浏览器内核项目,全世界第三大流行的浏览器内核控件。其基于chromium最新版内核,去除了chromium所有多余的部件,只保留最基本的排版引擎blink。miniblink保持了10M左右的极简大小,是所有同类产品最小的体积,同时支持windows xp、npapi。miniblink的作者非常牛逼,QQ昵称叫扫地僧,犹如天龙八部中的扫地僧一般,极其隐秘又武功极高,精通各种绝技,确实相当的屌。用Qt做项目过程中,遇到需要用到浏览器控件的项目,可能都会绕不开原创 2022-02-15 09:02:26 · 1488 阅读 · 0 评论 -
Qt/C++编写地图综合应用57-跨平台(win、linux、mac、uos、kylin等)
一、前言跨平台着实花了不少的精力,为了从Qt4.7兼容到Qt6.2及后续版本,头发掉了不少,仅有的几根毛所剩无几,哎,可能这就是程序员的命,本人写Qt程序这么多年,比较喜欢支持多个Qt版本,尤其是钟情于支持任意Qt版本+任意系统+任意编译器,这句话说起来简单其实实现起来就不容易了,首先你得有个很多版本的测试环境,起码十几个Qt环境要的吧,四五种操作系统要的吧,还要安装各种VS版本免不了的,毕竟win上除了默认的mingw编译器还有很多人用的是msvc编译器,这么一大堆环境折腾下来,没有个1T硬盘是不够的,原创 2022-02-13 10:02:25 · 4288 阅读 · 1 评论 -
Qt/C++编写地图综合应用56-实时动态轨迹
一、前言实时动态轨迹经历过很多个版本的迭代,此功能最初是一个客户定制的,主要是需要在地图上动态显示GPS的运动轨迹,有个应用场景就是一个带有监控的车子,实时在运动中,后台可以接收到经纬度信息,需要绘制对应的轨迹,相当于这些摄像机点位是动态移动的,这样就可以观测到摄像机的实时位置信息,双击摄像机还可以弹出画面实时预览,很直观。GPS运动轨迹这个功能,也需要用到js的知识,其实就是封装一个js函数,绘制对应的线条路径,这个轨迹点可能包括的信息有经度、纬度、速度、时间、是否标记、时间等信息,写个结构体封装下,原创 2022-02-09 09:32:37 · 6121 阅读 · 3 评论 -
Qt/C++编写地图综合应用55-海量点位标注
一、前言海量点位标注的出现,是为了解决普通设备点超过几百个性能极速降低的问题,普通的marker标注由于采用的是对象的形式存在于地图中,数量越多,占用内存特别大,超过1000个点性能极其糟糕,哪怕是用点聚合,拖动地图的时候更是一卡卡,简称卡成屎,加载的时候也是慢成一坨屎,所以迫切需要一个其他的形式来支持成千上万的海量点,最好的方式就是绘制图形,精简掉很多属性,比如自定义图标、旋转角度、单击动画跳动等一堆特性,这些其实大部分时候是不需要的,在海量点的场景下,完全可以牺牲这些特性,然后采用最简单的绘制图形的形原创 2022-01-27 09:43:35 · 4141 阅读 · 0 评论 -
Qt/C++编写地图综合应用54-动态点位标注
一、前言动态点位标注是定制的一个功能模块,提供直接地图上选点设置标记点,点位信息用结构体存储,其中包括了经度、纬度、速度、时间等信息,单击对应的标注点可以显示详细的弹框信息,弹框信息采用自定义的html格式显示,而不是地图自带的格式,这样显示更方便,比如可控不同行不同颜色或者加粗。标注点可选是否标记,标记的话就是一个设备图标显示,不标记的就普通的显示,一般在明显的拐弯的地方建议设置标记。近期在动态点位标注功能中还增加了新增点以后立即移动到地图中心,相当于把新增的点作为地图中心点,这样可以保证每次都能看到原创 2022-01-18 09:30:30 · 1458 阅读 · 0 评论 -
Qt/C++编写地图综合应用53-省市轮廓图下载
一、前言Qt的浏览器控件的交互机制非常方便,所以在在线地图的时候可以对每个区域的经纬度坐标集合发给Qt程序,让他去存储到文件,在实际的测试过程中,发现有部分地图有多个封闭的曲线的,比如散落的岛屿和飞地,这些可不能遗漏呢,所以存储经纬度坐标信息,要按照数组的形式存储,最开始做的时候按照一个字符串集合存储的,后面发现部分地方少了甚至不规则,原来是有多个曲线集合,解析的时候根据数组来实例化不规则线条的类即可。在线地图默认只能精确到县城,如果还要更精确的话,就需要自己手动调整边界点拉动好,然后主动获取当前边界点原创 2022-01-16 16:56:29 · 595 阅读 · 0 评论 -
Qt/C++编写地图综合应用52-加载离线地图
一、前言离线地图的加载其实和在线地图的加载方法几乎一样,唯一的最大区别就是,之前可能一个js文件引入即可,现在需要多个本地的js文件引入,而且网上流传的js文件的版本比较旧,意味着现在新版的支持opengl形式的地图无法支持,后期再去网上搜索找找看能不能搞到最新的版本。离线地图加载依赖一堆的js文件,整个文件夹可以自定义放置的位置,在网页代码引入的时候指定位置就行,一般建议就放在可执行文件下新建一个目录专门存放,这样管理方便,离线地图对应的图片文件目录也是可配置的,也建议放在这个目录下。二、功能特点原创 2022-01-15 10:04:44 · 3472 阅读 · 2 评论 -
Qt/C++编写地图综合应用51-离线瓦片地图下载
一、前言写这个离线地图下载器的初衷,就是为了方便自己的几个需要离线地图的程序,客户需求,既然地图程序已经可以支持离线地图,那如何获取到这些离线瓦片地图文件是个关键,而且这是这个功能的关键,拿到这些一张张的瓦片图片文件,才能根据js函数绘制组合成离线地图。网上其实有很多各种各样的离线地图下载器,大部分都是要收费的,免费的要么是限制了下载的瓦片数量或者级别,要么是下载的瓦片图打上了水印,看起来很难看,由于经常需要用到离线地图,摆脱这个限制,特意花了点时间重新研究了瓦片地图的原理,做了个离线地图下载器,其实瓦原创 2022-01-14 08:43:32 · 1603 阅读 · 1 评论 -
Qt/C++编写地图综合应用50-获取区域边界
一、前言区域边界也是一些坐标点集合,而且不同的行政区划得到的区域边界点数组集合个数不同,觉得部分都是一个集合,少部分有一些飞地之类的,需要多个闭合区域,所以会得到多个数组集合,绘制的时候都要分别取出来绘制就行。获取边界点一般和行政区划搭配起来使用,比如用户输入一个省市的名称,然后自动定位到该省市,然后对该轮廓获取所有边界点集合输出到js文件,最后供离线使用,获取边界点还有一个功能就是获取当前区域内的左下角右上角等经纬度坐标,这个主要是供离线地图下载使用的,百度地图很好的提供了bdary.get(city原创 2022-01-13 09:58:01 · 636 阅读 · 0 评论 -
Qt/C++编写地图综合应用49-地图类型(街道图、卫星图)
一、前言地图类型主要是两种,街道图和卫星图,平时我们看到的默认的都是街道图,无论是街道图还是卫星图,都是一张张图片文件组成的,级别越高,图片越是清晰,一般都会支持到19级的地图,相当于精确到20米内的图像,这个已经完全足够用了,想要再精确的级别应该是要商业级别的地图数据了,大部分的应用程序街道图够用,也有少部分的程序需要卫星图,可以看清地貌的情况。卫星地图,简称卫星图,确切的说法是卫星遥感图像,也叫卫星影像。所谓遥感,即遥远地感知。卫星遥感即通过卫星在太空中探测地球地表物体对电磁波的反射和其发射的电磁波原创 2022-01-11 09:30:55 · 2936 阅读 · 3 评论