| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | /**
 * @Author: Caven
 * @Date: 2020-02-25 18:28:36
 */
import { Cesium } from '../../../namespace'
import State from '../../state/State'
import Parse from '../../parse/Parse'
import { Util } from '../../utils'
import { Transform } from '../../transform'
import Overlay from '../Overlay'
class Wall extends Overlay {
  constructor(positions) {
    super()
    this._positions = Parse.parsePositions(positions)
    this._delegate = new Cesium.Entity({ wall: {} })
    this._state = State.INITIALIZED
  }
  get type() {
    return Overlay.getOverlayType('wall')
  }
  set positions(positions) {
    this._positions = Parse.parsePositions(positions)
    this._delegate.wall.positions =
      Transform.transformWGS84ArrayToCartesianArray(this._positions)
    return this
  }
  get positions() {
    return this._positions
  }
  _mountedHook() {
    /**
     * set the location
     */
    this.positions = this._positions
  }
  /**
   *
   * @param text
   * @param textStyle
   * @returns {Wall}
   */
  setLabel(text, textStyle) {
    return this
  }
  /**
   * Sets Style
   * @param style
   * @returns {Wall}
   */
  setStyle(style) {
    if (Object.keys(style).length === 0) {
      return this
    }
    delete style['positions']
    Util.merge(this._style, style)
    Util.merge(this._delegate.wall, style)
    return this
  }
  /**
   * Parses from entity
   * @param entity
   * @returns {Wall|any}
   */
  static fromEntity(entity) {
    let wall = undefined
    let now = Cesium.JulianDate.now()
    if (entity.polyline) {
      let positions = Transform.transformCartesianArrayToWGS84Array(
        entity.polyline.positions.getValue(now)
      )
      wall = new Wall(positions)
      wall.attr = {
        ...entity?.properties?.getValue(now),
      }
    }
    return wall
  }
}
Overlay.registerType('wall')
export default Wall
 |