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

/**
 * M3D缓存图层
 * @class M3DModelCacheLayer
 * @moduleEX LayerModule
 * @extends Layer
 * @param {Object} options 构造参数
 * @param {String} [options.url] 服务基地址
 * @param {Object} [options.extendOptions] 初始化场景图层的额外参数,三维引擎专有的初始化参数请传入此对象
 * @param {Object} [options.extendProps] 存储额外参数的属性
 */
class M3DModelCacheLayer extends Layer {
  constructor(options) {
    super(options)
    options = defaultValue(options, {})

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

    this._m3dServer = new M3DServer({
      url: this.url
    })
  }

  /**
   * 查询图层信息
   * */
  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.type = this.type
    _json.version = this.version
    _json.boundingVolume = this.boundingVolume
    _json.sceneName = this.sceneName
    _json.fieldInfo = this.fieldInfo
    _json.position = this.position
    _json.spatialReference = this.spatialReference
    _json.description = this.description
    _json.extendOptions = this.extendOptions

    return _json
  }

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

    return _layer
  }

  /**
   * 克隆图层对象
   * @return {M3DModelCacheLayer} 克隆后的图层对象
   */
  clone() {
    return new M3DModelCacheLayer(this.toJSON())
  }
}

/**
 * 通过url创建图层对象
 * @param {String} url 服务基地址
 * @return {IGSMapImageLayer} 新的图层对象
 * */
M3DModelCacheLayer.fromServerUrl = function (url) {
  return new M3DModelCacheLayer({
    url
  })
}

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