首页| 论坛| 消息
主题:性能提升百倍/Qt地图组件纯QWidget绘制/缓存瓦片技术/多线程加载绘制
liudianwu发表于 2026-03-06 08:08
之前web版本的地图组件,有一些用户反馈说加载瓦片的时候,能够看到明显的加载过程,比如先是一个空白的白色正方形区域,然后才是一张瓦片图片加载后绘制在对应区域,在拖动地图的时候,更明显,总体体验不是很好,如果该图片是首次加载,还能够理解,毕竟需要经过下载再绘制,是需要时间的,而当之前已经下载的,如果还出现空白再绘制,就无法接收,是否可以直接从内存中直接取出图片文件绘制,按照这个思路,纯qwidget版本的地图组件,内部维护一个缓存图片队列,当需要绘制的时候,先从缓存队列查询是否存在这个图片,存在则直接取出来,不存在再去下载,这样体验有了很好的提升,只有首次绘制的时候会看到过渡效果。
联网下载瓦片,相比直接从本地硬盘上取出图片,速度更慢,所以后面还加上了缓存文件的功能,也就是将下载的瓦片文件缓存在本地盘符,这样可以省去再去下载的过程,节约流量,于是整个加载流程就变成了下面的。
1. 第一步,先从内存缓存的pixmap队列中查找对应url地址对应的图片缓存,存在则取出来显示,速度最快。
2. 第二步,内存缓存没有,则判断是否开启了缓存目录,开启了,则从缓存目录找对应url地址存储的文件,找到了则加载对应文件缓存显示,速度一般,但是比从网络地址下载要快很多。
3. 第三步,内存缓存和文件缓存都没有,则直接从网络下载,下载后再显示,速度最慢,但是首次加载一般都需要这个步骤。
4. 第四步,如果是离线地图,则直接取设置的离线路径的瓦片文件,不经过内存缓存。

浏览大图
回帖(0):

全部回帖(0)»
最新回帖
收藏本帖
发新帖