类名 common/document/layer/baseLayer/FeatureLayer.js
import Layer from './Layer'
import { Zondy, ElevationInfo } from '../../../base'
import { GeometryType, LayerType } from '../../../base/enum'
import {defaultValue, toJSON} from '../../../util'
import { BaseRenderer } from '../../renderer'

/**
 * 要素图层基类
 * @class FeatureLayer
 * @moduleEX LayerModule
 * @extends Layer
 * @param {Object} options 构造参数
 * @param {String} [options.id = 随机] 图层id
 * @param {Array} [options.features = []] 要素集合
 * @param {Object} [options.renderer = undefined] 渲染样式
 * @param {Number} [options.minScale = 0] 最小缩放级数
 * @param {Number} [options.maxScale = 20] 最大缩放级数
 * @param {String} [options.tokenKey = 'token'] token名
 * @param {String} [options.tokenValue = ''] token值
 * @param {ElevationInfo} [options.ElevationInfo = new ElevationInfo()] 三维描述信息,暂时不支持
 */
class FeatureLayer extends Layer {
  constructor(options) {
    super(options)
    options = defaultValue(options, {})
    this.type = LayerType.feature
    /**
     * 三维描述信息
     * @member {ElevationInfo} FeatureLayer.prototype.elevationInfo
     */
    this.elevationInfo = new ElevationInfo(options.elevationInfo)
    /**
     * 几何类型
     * @member {String} FeatureLayer.prototype.geometryType
     */
    this.geometryType = GeometryType.geometry
    /**
     * 渲染器
     * @member {BaseRenderer} FeatureLayer.prototype.renderer
     */
    this.renderer = this._decorate(
      'renderer',
      options.renderer,
      BaseRenderer,
      BaseRenderer.fromJSON
    )
  }

  /**
   * @description 转换为json对象
   * @return {Object} json对象
   */
  toJSON() {
    const json = super.toJSON()
    json.renderer = toJSON(this.renderer, BaseRenderer)
    json.elevationInfo = toJSON(this.elevationInfo, ElevationInfo)
    json.geometryType = this.geometryType

    return json
  }

  /**
   * @description 克隆方法
   * @return {FeatureLayer} 图层
   */
  clone() {
    return new FeatureLayer(this.toJSON())
  }
}

Zondy.Layer.FeatureLayer = FeatureLayer
export default FeatureLayer
构造函数
成员变量
方法
事件