tiles layer 是 webgis 的重要组成部分, 互联网上流行的地图展示解决方案基本都包含 tiles layer 相关的实现.
什么是 tile layer
把当前 layer 切分成多个 tile(瓷砖), 是一种地图切片技术, 当前主流实现方式为:
- 每个瓦片具有唯一的瓦片等级(Level)和瓦片坐标编号(tileX, tileY)
- 瓦片分辨率为256256。
- 最小的地图等级是0,此时世界地图只由一张瓦片组成。
- 瓦片等级越高,组成世界地图的瓦片数越多,可以展示的地图越详细。
- 某一瓦片等级地图的瓦片是由低一级的各瓦片切割成的4个瓦片组成,形成了瓦片金字塔
在用户操作时根据当时所在的 层(z) 行(y) 列(x) 我们会加载对应的 tile 资源在 web 拼接并渲染出来.(这种技术在发明之后的很长一段时间都用在 webgis 的底图上, 而现在 tiles layer 有更多的应用).
为什么需要 tile layer
tile layer / tile map 的诞生是为了解决 webgis 数据量巨大所带来的每次 缩放 / 移动 整个地图重新加载所造成的性能问题.
tile layer 怎么解决的性能问题
tile layers 基于以下概念来做具体实现:
- 当缩放倍数很小,也就是地图很小的时候,很多细节不需要展示,反正也看不清,所以可以做适量的数据修剪. 很多不需要展示的细节也不会被加载, 对于传统的底图就是一个相对比较模糊的图片.对于 vector layer 则是会忽略很多数据.
- 当缩放倍数变大,很明显只需要加载或者使用一部分数据,
vector tile layer
webgis 经常会有在底图上绘制 类似 点,线,多边形等功能的需求, 当这种绘制需求的数据量很大时一样会造成严重的性能问题.
传统的 vector tile layer 需要后端使用 Mapnik 和 PostGIS 等工具完成.
当前前端可以使用 github.com/mapbox/geoj… 来做geojson 到 vector tiles layer 转换.
vector tiles 每一个 tile 里面只需要矢量数据, 而 普通 tiles 每一个 tile 是 cache 的图片.