Skip to content

Layer

Layer是maptalks中所有图层的基类,定义了图层的公共能力:添加/移除地图、层级管理(zIndex)、透明度、可见性、缩放范围、遮罩(mask)、碰撞检测、识别、事件等。它本身是抽象类(@abstract),不直接实例化。

图层的继承关系:TileLayerVectorLayerOverlayLayerImageLayerCanvasLayer 都继承自 Layer。其中 TileLayer 渲染瓦片,OverlayLayer 可增删几何,VectorLayer 是其子类。

Layer的继承链为 Layer → JSONAble(Eventable(Renderable(Class))),因此具备事件(on/off/fire)、JSON序列化、渲染能力。

js
import { TileLayer } from "maptalks";

const layer = new TileLayer("base", {
  urlTemplate: "https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",
  subdomains: ["a", "b", "c", "d"],
}).addTo(map);

构造函数

js
new Layer(id, options)

参数:

  • id String 图层唯一标识(必填)。
  • options Object 图层配置项(可选)。

options 配置项

配置名类型描述默认值
attributionString图层版权信息null
minZoomNumber图层显示的最小缩放级别null
maxZoomNumber图层显示的最大缩放级别null
visibleBoolean是否显示图层true
opacityNumber图层透明度(0~1)1
zIndexNumber图层z序undefined
hitDetectBoolean是否开启命中检测(影响光标样式)!mobile
rendererString渲染器类型(canvas/gl/gpu/dom)'canvas'
globalCompositeOperationStringcanvas 2d 混合模式null
cssFilterString应用于 canvas 的 CSS filternull
forceRenderOnMovingBoolean地图移动时强制重绘false
forceRenderOnZoomingBoolean地图缩放时强制重绘false
forceRenderOnRotatingBoolean地图旋转时强制重绘false
collisionBoolean是否开启碰撞检测false
collisionScopeString碰撞作用域(layer/map)'layer'
maskClipBoolean是否用遮罩裁剪图层true
maskGeometry|Object图层遮罩null
canvasHTMLCanvasElement指定图层画布

成员方法

标识

  • getId(): string / setId(id): this — 获取/设置图层id

添加与移除

  • addTo(map): this — 将图层添加到地图
  • remove(): this — 从地图移除图层

层级

  • getZIndex(): number / setZIndex(zIndex): this — 获取/设置层级
  • bringToFront(): this — 置顶
  • bringToBack(): this — 置底

显示与透明度

  • show(): this / hide(): this — 显示/隐藏图层
  • isVisible(): boolean — 是否可见
  • getOpacity(): number / setOpacity(opacity): this — 获取/设置透明度

缩放范围

  • getMinZoom(): number / getMaxZoom(): number — 获取最小/最大缩放级别

加载

  • load(): this — 加载图层
  • isLoaded(): boolean — 是否已加载

渲染

  • getRenderer() — 获取渲染器
  • isCanvasRender(): boolean — 是否Canvas渲染

地图相关

  • getMap(): Map — 获取图层所在的地图
  • getProjection() — 获取所在投影

遮罩

  • getMask(): Geometry / setMask(mask): this / removeMask(): this — 获取/设置/移除遮罩

识别

  • identify(coordinate, options) — 在坐标处识别要素(由子类实现)
  • identifyAtPoint(containerPoint, options) — 在容器点识别要素

碰撞

  • getCollisionIndex(): CollisionIndex — 获取碰撞索引
  • clearCollisionIndex(): this — 清除碰撞索引

序列化

  • toJSON(options?): Object — 导出图层JSON

静态方法

  • Layer.fromJSON(layerJSON): Layer | null — 从JSON还原图层
  • Layer.mergeOptions(options): this — 合并默认配置

事件

事件触发时机
idchange图层id改变
setzindex设置z序
setopacity设置透明度
show / hide显示/隐藏
visiblechange可见性改变
add / remove加入/移除地图
renderercreate渲染器创建完成
layerload图层加载完成
js
layer.on("layerload", () => {
  console.log("layer loaded");
});