Class: GroupLayerView

GroupLayerView

new GroupLayerView(options)

view/GroupLayerView.js, line 7

组图层对应的图层视图对象。

GroupLayerView 负责管理一组子图层视图的创建、移除、排序和扁平化访问能力, 是地图业务图层、覆盖物图层和底图图层容器在视图层的核心组织结构。

Name Type Default Description
options Object {} 可选

构造参数

Name Type Description
view BaseView 可选

所属视图对象。

layer Layer 可选

当前组图层视图对应的组图层对象。

layerViews Collection 可选

子图层视图容器。未传入时会自动创建空集合。

Example

Create GroupLayerView instance

// ES5 import style
const { GroupLayerView } = zondy

// ES6 import style
import { GroupLayerView } from '@mapgis/webclient-common'

Extends

Members

innerViewObject null

当前图层视图所属的引擎内部视图对象。

该属性等价于 view.getInnerView() 的快捷访问方式,常用于子类在实现底层引擎交互时直接读取内部视图。

Methods

_findFlatLayerViewById(id){*}

view/GroupLayerView.js, line 472

通过id获取图层视图(扁平化)

Name Type Description
id *
Returns:
Type Description
*

_findLastLayerViewById(id){*}

view/GroupLayerView.js, line 482

查找当前id的下一个图层视图

Name Type Description
id *
Returns:
Type Description
*

_findLayerViewById(id){*}

view/GroupLayerView.js, line 462

通过id获取图层视图

Name Type Description
id *
Returns:
Type Description
*

_fireLayerCreatedError(layer, layerView, err){*}

view/GroupLayerView.js, line 422

图层视图创建失败事件

Name Type Description
layer Layer
layerView LayerView
err *

错误信息

Returns:
Type Description
*

_fireLayerViewCreated(layer, layerView){*}

view/GroupLayerView.js, line 401

图层视图创建完毕事件

Name Type Description
layer Layer
layerView LayerView
Returns:
Type Description
*

_fireLayerViewCreatedByLayerViews(layerViews){*}

view/GroupLayerView.js, line 381

发送子图层创建完毕事件

Name Type Description
layerViews Array.<LayerView>
Returns:
Type Description
*

_fireLayerViewRemove(layer, layerView){*}

view/GroupLayerView.js, line 443

图层视图移除事件

Name Type Description
layer Layer
layerView LayerView
Returns:
Type Description
*

inherited _fireLayerViewUpdateEvent(message, updateContent){*}

view/LayerView.js, line 219

发送视图更新事件

Name Type Description
message String
updateContent UpdateContent | Array.<UpdateContent>
Returns:
Type Description
*

_removeLayerViews(){*}

view/GroupLayerView.js, line 228

清空全部图层视图

Returns:
Type Description
*

_reorderLayerView(layerView){*}

view/GroupLayerView.js, line 509

通过layerView排序(需要保证视图存在)

Name Type Description
layerView LayerView

图层视图

Returns:
Type Description
*

_setItemParent(item, parent){*}

view/GroupLayerView.js, line 358

设置item的父级

Name Type Description
item *
parent *
Returns:
Type Description
*

inherited _updateScaleVisible(){*}

view/LayerView.js, line 100

更新比例尺可见性

Returns:
Type Description
*

add(layerView, index){Promise.<Array.<LayerView>>}

view/GroupLayerView.js, line 61

向当前组图层视图中插入一个子图层视图。

该方法是 addMany 的单项封装,适合在已构造好 LayerView 实例时按指定位置插入。

Name Type Description
layerView LayerView

要添加的图层视图对象。

index Number 可选

插入位置。未传入时追加到末尾。

Returns:
Type Description
Promise.<Array.<LayerView>> 实际添加成功的图层视图数组。

addMany(layers, index){Promise.<Array.<LayerView>>}

view/GroupLayerView.js, line 88

批量创建并添加多个子图层视图。

该方法会先根据传入图层集合过滤已加载且尚未创建视图的图层, 再按顺序调用视图的图层视图工厂方法完成创建与添加。

Name Type Description
layers Array.<Layer>

要添加的图层数组。

index Number 可选

图层视图插入位置。未传入时追加到末尾。

Returns:
Type Description
Promise.<Array.<LayerView>> 实际添加成功的图层视图数组。

inherited checkLayerCanAddedStatus(){Boolean}

view/LayerView.js, line 183

检查当前图层视图是否仍然允许被添加到视图中。

在异步创建图层视图的过程中,如果图层已经从父容器移除, 或所属视图已经被销毁,则应放弃继续执行添加逻辑。

Returns:
Type Description
Boolean true 表示图层仍存在且视图未销毁;否则返回 false

onAdd(event){Promise.<GroupLayerView>}

view/GroupLayerView.js, line 46

将当前组图层中的全部子图层添加到视图中。

调用后会遍历当前组图层内的子图层,并依次创建、添加对应的子图层视图。

Name Type Description
event LayerEvent 可选

图层事件对象。

Returns:
Type Description
Promise.<GroupLayerView> 添加完成后返回当前组图层视图对象。

inherited onRefresh(){Promise.<LayerView>}

view/LayerView.js, line 197

刷新当前图层视图。

默认实现会先执行 onRemove,再执行 onAdd, 并通过防抖包装避免高频重复刷新。

Returns:
Type Description
Promise.<LayerView> 刷新完成后返回当前图层视图对象。

onRemove(event){Promise.<GroupLayerView>}

view/GroupLayerView.js, line 319

将当前组图层中的全部子图层从视图中移除。

调用后会遍历当前组图层内已创建的子图层视图,并依次执行移除逻辑。

Name Type Description
event LayerEvent 可选

图层事件对象。

Returns:
Type Description
Promise.<GroupLayerView> 移除完成后返回当前组图层视图对象。

onUpdate(event){Promise.<GroupLayerView>}

view/GroupLayerView.js, line 336

将更新事件分发给当前组图层视图中的所有子图层视图。

适用于组图层整体配置变化后,统一驱动子图层视图执行各自的更新逻辑。

Name Type Description
event LayerViewUpdateEvent

图层视图更新事件对象。

Returns:
Type Description
Promise.<GroupLayerView> 全部子图层视图更新完成后返回当前组图层视图对象。

remove(layerView){Promise.<void>|Promise.<Array.<LayerView>>}

view/GroupLayerView.js, line 75

从当前组图层视图中移除一个子图层视图。

该方法是 removeMany 的单项封装,适合删除单个已存在的图层视图。

Name Type Description
layerView LayerView

要移除的图层视图对象。

Returns:
Type Description
Promise.<void> | Promise.<Array.<LayerView>> 移除流程对应的 Promise。

removeAll(){Promise.<void>|undefined}

view/GroupLayerView.js, line 262

移除当前组图层视图中的全部子图层视图。

适合在组图层整体卸载、底图切换或视图销毁时统一清空当前容器中的所有子图层视图。

Returns:
Type Description
Promise.<void> | undefined 移除流程对应的 Promise;当容器不存在时返回 undefined

removeMany(layers){Promise.<Array.<LayerView>>}

view/GroupLayerView.js, line 206

批量移除多个子图层视图。

传入的是图层数组而非图层视图数组,方法内部会先定位对应的图层视图, 再执行统一的移除与容器清理流程。

Name Type Description
layers Array.<Layer>

要移除的图层数组。

Returns:
Type Description
Promise.<Array.<LayerView>> 已完成移除处理的图层视图数组。

reorder(layer){void}

view/GroupLayerView.js, line 277

根据组图层中的图层顺序调整对应图层视图的显示顺序。

当组图层内部执行图层重排后,可调用该方法同步更新视图侧的渲染顺序。

Name Type Description
layer Layer

发生顺序变化的图层对象。

Returns:
Type Description
void

syncLayerViewOrder()

view/GroupLayerView.js, line 294

组图层视图内同步