总结
图形管理类的图层的特点:
- 适用加载普通规模的数据
- 适合细粒度细的场景
- 编辑
- 拖拽
- 动画
- 部分数据更新等
- 数据频繁的更新
- 可以拿到图层内的所有数据,可以对数据做精细化的管理,可以管理到图层内的每条数据
WARNING
地图上图形管理图层的要尽可能的少,千万不要出现一条数据一个图层这种代码,因为图形管理图层的创建和管理 也是很吃资源的,
- 图形应该根据图形的类型进行分类,分别放到不同的图层
- 但是不能出现一个图层就几条数据这种极端情况
- 总之就是图层不能太多,要尽可能的利用图层
基于OverlayLayer
图层 |
---|
VectorLayer |
PointLayer |
LineStringLayer |
PolygonLayer |
GLTFLayer |
ExtrudePolygonLayer |
这几个图层都是基于OverlayLayer的,他们的使用方式都是一样的,区别是管理的图形类别不同和渲染形态不同而已.
TIP
除了 VectorLayer 是canvas渲染的,其他的一律是webgl,是可以添加到GroupGLLayer的
ImageLayer
ImageLayer 虽然属于图形管理类图层,但是其不是基于 OverlayLayer的,使用时要注意
ThreeLayer
ThreeLayer虽然属于图形管理类图层,但是其不是基于OverlayLayer的,其是基于 CanvasLayer的,是个丰富maptalks图形渲染的插件,看名字就知道其是利用threejs来扩展maptalks的图形种类
什么是垂直高度和海拔?
- 垂直高度指的自身的高度,比如高度为100米的一个建筑物
- 海拔指的图形数据相对于海平面的高度
- 在珠峰上建一个100M的房子,那么房子其海拔就是8849米,自身垂直高度就是100米
- 所有要注意海拔和垂直高度的区别
- 当然像点和线这些图形其是没有垂直高度,但是可以有海拔的
关于图形里的坐标数据
图形的坐标(coordinates)数据支持[x,y,z]格式:
- x 经度
- y 纬度
- z 海拔
一般是线或者点的数据携带海拔高度数据,他们渲染的效果如下图:
这几个图层异同?
VectorLayer
是早期maptalks里的矢量图层,在核心库里maptalks
,里面可以存放点线面等,采用canvas渲染,也支持海拔数据的渲染,但是效果不好,毕竟是用canvas模拟出来的
后来随着maptalks
自身的发展提供了webgl扩展包@maptalks/gl-layers
:
PointLayer
是maptalks的webgl扩展包@maptalks/gl-layers
里提供的,只能添加点
数据,采用webgl渲染LineStringLayer
是maptalks的webgl扩展包@maptalks/gl-layers
里提供的,只能添加线
数据,采用webgl渲染PolygonLayer
是maptalks的webgl扩展包@maptalks/gl-layers
里提供的,只能添加面
数据,采用webgl渲染
和VectorLayer
对比相当于把VectorLayer
拆分成了PointLayer
,LineStringLayer
,PolygonLayer
,之所以这么做主要是为了相同类型的数据在webgl里方便管理和数据合并,减少底层webgl的复杂度和更好的性能表现
TIP
注意这里提到的几个图层他们里面的图形是没有垂直高度
,但是图形数据可以具有海拔高度
GLTFLayer和ExtrudePolygonLayer
这两个图层都3D数据的图层,有@maptalks/gl-layers
包提供,这里的3D指的是数据自身具有垂直高度
- GLTFLayer 3D模型数据图层,模型是具有
垂直高度的
- ExtrudePolygonLayer 多边形拔高图层,多边形被拔高是具有
垂直高度的