想实现这个功能由来已久,对标奥维地图或者qgc等地图控件,都具备这个功能,也就是当瓦片不存在的时候,先查找上级瓦片,然后裁切对应区域,最后拉伸填充到当前瓦片区域,看起来会模糊一些,但总归是效果满足人眼的需要,不然就是一个空白区域很突兀。理论上来说,地图放大的时候,上一级的瓦片之前是肯定加载过的,那就可以利用这个机制做文章,有标准公式来计算,比如当前瓦片区域对应x、y、z,他的上级瓦片是x/2、y/2、z-1,然后再根据xy的奇数偶数,来判断需要裁切四个区域的哪个区域,按照这个机制吭哧吭哧一顿输出,搞完收工非常完美,先从内存瓦片中找到对应上级的瓦片,裁切对应区域拉伸填充占位,再去联网
下载瓦片,下载好了再覆盖对应区域,整体上看下来就是先一个模糊的瓦片,下载好了替换后就是一个清晰的
图片。
光有这个查找上级的功能还是不够的,顺藤摸瓜能不能实现无极
缩放呢?或者最少两到三个级别,观察发现市面上的
其他地图软件,几乎都是2-3级别,后面发现有通用的公式,传入xy和层级,直接裁切哪个区域的图片返回,2级别是图片的八分之一,3层级就是16分之一,层级越大切割的数量越多,图片月模糊,又是一顿吭哧吭哧搞,实现了无极缩放,用户非常满意,理论上来说,只要提供一张最初的世界地图瓦片,可以无极缩放到所有层级,后面验证下来,我还是太年轻了,超过8个层级,居然用的原始图片裁切的,原来最大只能往上找8个层级,因为第八层级就已经是256等分了,如果是256的瓦片,就是一个像素要填充一个区域,全是马赛克,再小就是0,导致裁切
失败返回的原图。

