类名 common/document/layer/igserver/IGSSceneSubLayer.js
import { Zondy } from '../../../base'
import { SubLayer } from '../baseLayer'
import { defaultValue, getGUID, toJSON } from '../../../util'
import { Extent, Point } from '../../../base/geometry'

/**
 * IGS的SceneLayer子图层
 * @class IGSSceneSubLayer
 * @moduleEX LayerModule
 * @extends SubLayer
 * @param {Object} options 构造参数
 * @param {Object} [options.extendOptions] 初始化图层的额外参数,三维引擎专有的初始化参数请传入此对象
 */
class IGSSceneSubLayer extends SubLayer {
  constructor(options) {
    super(options)
    options = defaultValue(options, {})
    /**
     * 子图层的id
     * @member {String} IGSSceneSubLayer.prototype.id
     */
    this.id = defaultValue(options.layerIndex, getGUID())
    /**
     * 子图层的索引
     * @member {Number} IGSSceneSubLayer.prototype.layerIndex
     */
    this.layerIndex = defaultValue(options.layerIndex, 0)
    this.layerRenderIndex = defaultValue(options.layerRenderIndex, 0)

    /**
     * 子图层类型
     * @member {String} IGSSceneSubLayer.prototype.type
     */
    this.type = defaultValue(options.layerType, undefined)

    /**
     * 子图层渲染类型
     * @member {String} IGSSceneSubLayer.prototype.renderType
     */
    this.renderType = defaultValue(options.layerRenderType, undefined)

    /**
     * 开始级别
     * @member {Number} IGSSceneSubLayer.prototype.beginLevel
     */
    this.beginLevel = defaultValue(options.beginLevel, -1)

    /**
     * 结束级别
     * @member {Number} IGSSceneSubLayer.prototype.endLevel
     */
    this.endLevel = defaultValue(options.endLevel, -1)

    /**
     * 网格划分的源点
     * @member {Point} IGSSceneSubLayer.prototype.originPoint
     */
    if (options.originalPoints) {
      this.originPoint = new Point({
        coordinates: [options.originalPoints.x, options.originalPoints.y]
      })
    } else {
      this.originPoint = undefined
    }

    /**
     * 最大网格大小
     * @member {Number} IGSSceneSubLayer.prototype.maxFrameSize
     */
    if (options.frameSizes) {
      this.maxFrameSize = options.frameSizes[0]
    } else {
      this.maxFrameSize = undefined
    }

    /**
     * 初始化图层的额外参数,三维引擎专有的初始化参数请传入此对象
     * @member {Object} IGSSceneSubLayer.prototype.extendOptions
     */
    this.extendOptions = defaultValue(options.extendOptions, {})

    /**
     * 子图层服务地址
     * @member {String} IGSSceneSubLayer.prototype.url
     */
    this.url = defaultValue(options.url || options.gdbpUrl, undefined)

    /**
     * 子图层服范围(二维)
     * @member {Extent} IGSSceneSubLayer.prototype.range
     */
    if (options.range) {
      this.range = new Extent({
        xmin: options.range.xMin,
        ymin: options.range.yMin,
        xmax: options.range.xMax,
        ymax: options.range.yMax
      })
    } else {
      this.range = undefined
    }

    /**
     * 子图层服范围(三维)
     * @member {Extent} IGSSceneSubLayer.prototype.range3D
     */
    if (options.range3D) {
      this.range3D = new Extent({
        xmin: options.range3D.xMin,
        ymin: options.range3D.yMin,
        xmax: options.range3D.xMax,
        ymax: options.range3D.yMax,
        zmin: options.range3D.zMin,
        zmax: options.range3D.zMax
      })
    } else {
      this.range3D = undefined
    }

    /**
     * 子图层所属的场景服务图层
     * @member {Layer} SubLayer.prototype.layer
     */
    this.layer = defaultValue(options.layer, undefined)
    if (
      options.children &&
      options.children instanceof Array &&
      options.children.length > 0
    ) {
      for (let i = 0; i < options.children.length; i++) {
        options.children[i].layer = this.layer
        this.sublayers.push(new IGSSceneSubLayer(options.children[i]))
      }
    }
    this.elevationScale = defaultValue(options.elevationScale, undefined)
    this.requestVertexNormals = defaultValue(
      options.requestVertexNormals,
      false
    )
    this.labelLayer = defaultValue(options.labelLayer, undefined)
    this.layerName = defaultValue(options.layerName, undefined)
  }

  /**
   * 将对象转为json对象
   * @return {Object} json对象
   * */
  toJSON() {
    const _sublayers = []
    for (let i = 0; i < this.sublayers.length; i++) {
      _sublayers.push(toJSON(this.sublayers[i], IGSSceneSubLayer))
    }

    const json = {
      id: this.id,
      sublayers: this.sublayers,
      title: this.title,
      visible: this.visible,
      layerIndex: this.layerIndex,
      type: this.type,
      renderType: this.renderType,
      beginLevel: this.beginLevel,
      endLevel: this.endLevel,
      originPoint: this.originPoint,
      maxFrameSize: this.maxFrameSize,
      extendOptions: this.extendOptions
    }

    return json
  }
}

/**
 * 通过json对象初始化该对象
 * @param {Object} json json对象
 * @memberof IGSSceneSubLayer
 */
IGSSceneSubLayer.fromJSON = function (json) {
  return new IGSSceneSubLayer(json)
}

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