Skip to content
目录

总结

图形管理类的图层的特点:

  • 适用加载普通规模的数据
  • 适合细粒度细的场景
    • 编辑
    • 拖拽
    • 动画
    • 部分数据更新等
    • 数据频繁的更新
  • 可以拿到图层内的所有数据,可以对数据做精细化的管理,可以管理到图层内的每条数据

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 多边形拔高图层,多边形被拔高是具有垂直高度的

This document is generated by mdpress