类名 common/document/layer/Cesium3DTilesCacheLayer.js
import { Layer } from './baseLayer'
import { Zondy } from '../../base'
import { defaultValue } from '../../util'
import { LayerType, LoadStatus } from '../../base/enum'
import { jsonClone } from '../../util/Utils'

/**
 * Cesium3DTiles图层
 * @class Cesium3DTilesCacheLayer
 * @moduleEX LayerModule
 * @extends Layer
 * @param {Object} options 构造参数
 * @param {String} [options.url = ''] 服务链接
 * @param {Object} [options.extendOptions] 初始化场景图层的额外参数,三维引擎专有的初始化参数请传入此对象
 * @param {Object} [options.extendProps] 存储额外参数的属性
 */

class Cesium3DTilesCacheLayer extends Layer {
  constructor(options) {
    super(options)
    options = defaultValue(options, {})

    /**
     * 服务基地址
     * @member {String} Cesium3DTilesCacheLayer.prototype.url
     */
    this.url = defaultValue(options.url, '')
    /**
     * 图层类型
     * @member {String} Cesium3DTilesCacheLayer.prototype.type
     */
    this.type = LayerType.cesium3DTiles
    /**
     * 服务版本号
     * @member {String} Cesium3DTilesCacheLayer.prototype.version
     */
    this.version = undefined
    /**
     * 模型外包盒
     * @member {Object} Cesium3DTilesCacheLayer.prototype.boundingVolume
     */
    this.boundingVolume = undefined
    /**
     * 服务名
     * @member {String} Cesium3DTilesCacheLayer.prototype.sceneName
     */
    this.sceneName = undefined
    /**
     * 服务包含的表字段数组
     * @member {String} Cesium3DTilesCacheLayer.prototype.fieldInfo
     */
    this.fieldInfo = undefined
    /**
     * 模型位置
     * @member {Object} Cesium3DTilesCacheLayer.prototype.position
     */
    this.position = undefined
    /**
     * 模型坐标系
     * @member {Object} Cesium3DTilesCacheLayer.prototype.spatialReference
     */
    this.spatialReference = undefined
    /**
     * 描述信息
     * @member {String} Cesium3DTilesCacheLayer.prototype.description
     */
    this.description = '3DTiles图层'
    /**
     * 初始化图层的额外参数,三维引擎专有的初始化参数请传入此对象
     * @member {Object} Cesium3DTilesCacheLayer.prototype.extendOptions
     */
    this.extendOptions = defaultValue(options.extendOptions, {})
  }

  /**
   * 从igs获取图层信息的方法
   */
  load() {
    return super.load()
  }

  /**
   * 子类加载服务端元信息的方法
   * @private
   * */
  _load() {
    const self = this
    return new Promise((resolve) => {
      self.loadStatus = LoadStatus.loaded
      self.loaded = true
      resolve(self)
    })
  }

  /**
   * 将图层转为json对象
   * @return {Object} josn对象
   * */
  toJSON() {
    const json = super.toJSON()
    json.url = this.url
    json.extendOptions = this.extendOptions

    return json
  }

  static fromJSON(json) {
    json = jsonClone(json)
    const _layer = new Cesium3DTilesCacheLayer(json)
    _layer._isFromJSON = true

    return _layer
  }

  /**
   * 克隆并返回一个新图层
   * @return {Cesium3DTilesCacheLayer} 新的图层对象
   * */
  clone() {
    return new Cesium3DTilesCacheLayer(this.toJSON())
  }
}

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