类名 common/document/layer/igserver/Scene.js
import {defaultValue, toJSON} from '../../../util'
import { Extent } from '../../../base/geometry'
import IGSSceneSubLayer from './IGSSceneSubLayer';

/**
 * 场景对象
 * @class Scene
 * @moduleEX LayerModule
 * @param {Object} options 构造参数
 * @param {Number} [options.sceneIndex = 0] 该场景在场景文档中的索引
 * @param {String} [options.sceneName] 场景名
 * @param {String} [options.sceneMode] 场景类型
 * @param {Extent} [options.sceneMode] 场景包围盒
 * @param {Array} [options.sublayers] 场景中包含的图层列表
 * @param {IGSSceneLayer} [options.layer] 场景所属的场景服务图层
 * @param {Array} [options.extendedProps] 扩展属性
 */
class Scene {
  constructor(options) {
    options = defaultValue(options, {})

    /**
     * 该场景在场景文档中的索引
     * @member {Number} Scene.prototype.sceneIndex
     */
    this.sceneIndex = defaultValue(options.sceneIndex, 0)
    /**
     * 场景名
     * @member {String} Scene.prototype.sceneName
     */
    this.sceneName = defaultValue(options.sceneName, undefined)
    /**
     * 场景类型
     * @member {String} Scene.prototype.sceneMode
     */
    this.sceneMode = defaultValue(options.sceneMode, undefined)
    /**
     * 场景包围盒
     * @member {Extent} Scene.prototype.sceneRange
     */
    this.sceneRange = defaultValue(
      new Extent({
        xmin: options.sceneRange.xMin,
        ymin: options.sceneRange.yMin,
        xmax: options.sceneRange.xMax,
        ymax: options.sceneRange.yMax,
        zmin: options.sceneRange.zMin,
        zmax: options.sceneRange.zMax
      }),
      undefined
    )
    /**
     * 场景中包含的图层列表
     * @member {Array} Scene.prototype.sublayers
     */
    this.sublayers = defaultValue(options.sublayers, [])
    /**
     * 场景所属的场景服务图层
     * @member {IGSSceneLayer} Scene.prototype.layer
     */
    this.layer = defaultValue(options.layer, undefined)
    /**
     * 扩展属性
     * @member {Array} Scene.prototype.extendedProps
     */
    this.extendedProps = defaultValue(options.extendedProps, undefined)
  }

  /**
   * 通过GDBP查询子图层
   * @param {String} url GDBP地址
   * @return {IGSSceneSubLayer} 子图层
   * */
  findSublayerByGDBP(url) {
    let sublayer = undefined
    for (let i = 0; i < this.sublayers.length; i++) {
      if (this.sublayers[i].url === url) {
        sublayer = this.sublayers[i]
        break
      }
    }
    return sublayer
  }

  toJSON() {
    const _sublayers = []
    for (let i = 0; i < this.sublayers.length; i++) {
      _sublayers.push(toJSON(this.sublayers[i], IGSSceneSubLayer))
    }

    return {
      sceneIndex: this.sceneIndex,
      sceneName: this.sceneName,
      sceneMode: this.sceneMode,
      sceneRange: toJSON(this.sceneRange, Extent),
      extendedProps: this.extendedProps,
      sublayers: _sublayers
    }
  }
}

export default Scene
构造函数
成员变量
方法
事件