类名 document/ArcGISVectorTileLayerView.js
import { LayerView } from '@mapgis/webclient-common'
import { ArcGISVectorTileLayerUtil } from '../view/utils'

class ArcGISVectorTileLayerView extends LayerView {
  /**
   * 添加图层视图
   * @param {LayerEvent} 图层事件
   * @return {Promise<LayerView>} 图层视图
   */
  onAdd() {
    const layer = this.layer
    const self = this
    ArcGISVectorTileLayerUtil.addIGSVectorTileLayer(this, {
      callback(layers) {
        for (let i = 0; i < layers.length; i++) {
          layers[i].commonLayerId = layer.id
        }
        self.innerLayer = layers
      }
    })
    return Promise.resolve(this)
  }

  /**
   * 移除图层视图
   * @param {LayerEvent} 图层事件
   * @return {Promise<LayerView>} 图层视图
   */
  onRemove() {
    ArcGISVectorTileLayerUtil.removeLayer(this)
    return Promise.resolve(this)
  }

  /**
   * 更新图层视图
   * @param {LayerViewUpdateEvent} event 图层事件
   * @return {Promise<LayerView>} 图层视图
   */
  onUpdate(event) {
    // 确保有updateContent
    if (event.updateContent) {
      for (let i = 0; i < event.updateContent.length; i++) {
        const updateContent = event.updateContent[i]
        // 有updateContent
        if (updateContent) {
          switch (updateContent.name) {
            // 更新主图层可见性
            case 'visible':
              ArcGISVectorTileLayerUtil.setVisible(this)
              break
            // 更新透明度
            case 'opacity':
              ArcGISVectorTileLayerUtil.setOpacity(this)
              break
            // 更新绘制样式
            case 'setPaintProperties':
              ArcGISVectorTileLayerUtil.setPaintProperties(this, updateContent)
              break
            // 更新布局样式
            case 'setLayoutProperties':
              ArcGISVectorTileLayerUtil.setLayoutProperties(this, updateContent)
              break
            // 更新过滤条件
            case 'setStyleLayerFilter':
              ArcGISVectorTileLayerUtil.setStyleLayerFilter(this, updateContent)
              break
            // 更新显示范围
            case 'setStyleLayerZoomRange':
              ArcGISVectorTileLayerUtil.setStyleLayerZoomRange(
                this,
                updateContent
              )
              break
            // 更新所有子图层
            case 'setStyleLayer':
              ArcGISVectorTileLayerUtil.updateStyleLayer(this)
              break
            // 删除子图层
            case 'deleteStyleLayer': {
              ArcGISVectorTileLayerUtil.updateStyleLayer(this)
              break
            }
            default:
              break
          }
        }
      }
    }
    return Promise.resolve(this)
  }
}
export default ArcGISVectorTileLayerView
构造函数
成员变量
方法
事件