NormalLayer
此类是图层基类,提供基础的图层功能。
构造函数
| 构造函数 | 描述 |
|---|---|
| BMapGL.NormalLayer(options: object) | 创建普通图层实例 |
配置选项
| 属性 | 类型 | 描述 |
|---|---|---|
| visible | boolean | 图层是否可见,默认为true |
| opacity | number | 图层透明度,范围0-1,默认为1 |
| minZoom | number | 最小显示级别,默认为0 |
| maxZoom | number | 最大显示级别,默认为18 |
| zIndex | number | 图层层级,默认为0 |
| enablePicked | boolean | 是否启用拾取,默认为false |
| autoSelect | boolean | 是否自动选中,默认为false |
| popEvent | boolean | 是否弹出事件,默认为false |
| pickWidth | number | 拾取宽度,默认为0 |
| pickHeight | number | 拾取高度,默认为0 |
实例方法
| 方法 | 参数 | 返回值 | 描述 |
|---|---|---|---|
| onAdd | map: Map, gl: GL | 无 | 添加到地图时回调此方法 |
| preRender | map: Map, matrix: Matrix | 无 | 图层渲染前调用 |
| render | gl: GL, matrix: Matrix, opt: Object | 无 | 图层渲染调用,opt.isPickRender 为true,则代表是离屏渲染,计算点击数据 |
| getPickedItem | index: number, model: string | Object | null | 根据数据索引,获取数据项,通过事件返回。model取值:onmousemove,onclick |
| afterRender | gl: GL, matrix: Matrix | 无 | 图层渲染后调用 |
| onDestroy | map: Map, gl: GL | 无 | 图层渲染后调用 |
| onHide | map: Map, gl: GL | 无 | 小于minZoom 或者 大于 maxZoom 会自动调用这个方法 |
| onShow | map: Map, gl: GL | 无 | onHide状态进入onShow时,会调用这个方法 |
| doOnceDraw | 无 | 无 | 触发图层渲染 |
| setZIndex | zIndex: number | 无 | 设置图层叠加顺序,如果当前zIndex已使用,替换当前位置,当前位置图层顺次后移 |
| setZIndexTop | 无 | 无 | 将当前图层设置为最上层,原位置数据置空 |
| setUpLevel | 无 | 无 | 向上移动一层,如果已经是顶层则不移动 |
| setDownLevel | 无 | 无 | 向下移动一层,如果已经是低层则不移动 |
| getZIndex | 无 | number | 获取图层层级 |
| setVisible | visible: boolean | 无 | 设置图层显示隐藏状态 |
| getVisible | 无 | boolean | 获取图层显示隐藏状态 |
| setOpacity | opacity: number | 无 | 设置图层透明度,默认是1,取值范围为0-1 |
| getOpacity | 无 | number | 获取图层透明度 |
| setMinZoom | minZoom: number | 无 | 设置图层最小显示等级 |
| getMinZoom | 无 | number | 获取图层最小显示等级 |
| setMaxZoom | maxZoom: number | 无 | 设置图层最大显示等级 |
| getMaxZoom | 无 | number | 获取图层最大显示等级 |
| setData | data: Object | void | 设置图层数据 |
| getData | void | Object | 获取图层数据 |
| updateState | state: Object | void | 更新图层状态 |
| removeState | state: Object | void | 移除图层状态 |
| clearState | void | void | 清除图层状态 |
| addDelIndex | index: number | void | 添加删除索引 |
| removeDelIndex | index: number | void | 移除删除索引 |
| clearDelIndex | void | void | 清除删除索引 |
示例
ts
// 创建普通图层
const layer = new BMapGL.NormalLayer({
visible: true,
opacity: 0.8,
minZoom: 3,
maxZoom: 18,
zIndex: 1,
enablePicked: true,
autoSelect: false,
popEvent: true,
pickWidth: 10,
pickHeight: 10
});
// 设置数据
const data = {
// 图层数据
};
layer.setData(data);
map.addLayer(layer);注意事项
显示控制:
- 合理设置显示级别范围
- 注意图层层级顺序
- 控制图层透明度
交互设置:
- 根据需要启用拾取功能
- 合理设置拾取区域大小
- 注意事件处理性能
性能优化:
- 大量数据时考虑分批处理
- 合理使用状态缓存
- 注意内存占用
图层生命周期:
- 注意在onAdd中初始化资源
- 在onDestroy中清理资源
- 合理处理onShow和onHide状态
渲染控制:
- 实现render方法进行图层渲染
- 注意渲染性能优化
- 处理离屏渲染场景
事件处理:
- 合理设置enablePicked和autoSelect
- 注意事件冒泡控制
- 及时清理事件监听
