找回密码
 立即注册
收起左侧

性能提升百倍/Qt地图组件纯QWidget绘制/缓存瓦片技术/多线...

0
回复
187
查看
[复制链接]
累计签到:7 天
连续签到:1 天
来源: 2026-3-6 08:18:24 显示全部楼层 |阅读模式
之前web版本的地图组件,有一些用户反馈说加载瓦片的时候,能够看到明显的加载过程,比如先是一个空白的白色正方形区域,然后才是一张瓦片图片加载后绘制在对应区域,在拖动地图的时候,更明显,总体体验不是很好,如果该图片是首次加载,还能够理解,毕竟需要经过下载再绘制,是需要时间的,而当之前已经下载的,如果还出现空白再绘制,就无法接收,是否可以直接从内存中直接取出图片文件绘制,按照这个思路,纯qwidget版本的地图组件,内部维护一个缓存图片队列,当需要绘制的时候,先从缓存队列查询是否存在这个图片,存在则直接取出来,不存在再去下载,这样体验有了很好的提升,只有首次绘制的时候会看到过渡效果。

联网下载瓦片,相比直接从本地硬盘上取出图片,速度更慢,所以后面还加上了缓存文件的功能,也就是将下载的瓦片文件缓存在本地盘符,这样可以省去再去下载的过程,节约流量,于是整个加载流程就变成了下面的。

1. 第一步,先从内存缓存的pixmap队列中查找对应url地址对应的图片缓存,存在则取出来显示,速度最快。
2. 第二步,内存缓存没有,则判断是否开启了缓存目录,开启了,则从缓存目录找对应url地址存储的文件,找到了则加载对应文件缓存显示,速度一般,但是比从网络地址下载要快很多。
3. 第三步,内存缓存和文件缓存都没有,则直接从网络下载,下载后再显示,速度最慢,但是首次加载一般都需要这个步骤。
4. 第四步,如果是离线地图,则直接取设置的离线路径的瓦片文件,不经过内存缓存。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了