Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /**
  2. * @Author: Caven
  3. * @Date: 2020-02-25 18:28:36
  4. */
  5. import { Cesium } from '@dc-modules/namespace'
  6. import State from '@dc-modules/state/State'
  7. import Parse from '@dc-modules/parse/Parse'
  8. import { Util } from '@dc-modules/utils'
  9. import { Transform } from '@dc-modules/transform'
  10. import Overlay from '../Overlay'
  11. class Wall extends Overlay {
  12. constructor(positions) {
  13. super()
  14. this._positions = Parse.parsePositions(positions)
  15. this._delegate = new Cesium.Entity({ wall: {} })
  16. this._state = State.INITIALIZED
  17. }
  18. get type() {
  19. return Overlay.getOverlayType('wall')
  20. }
  21. set positions(positions) {
  22. this._positions = Parse.parsePositions(positions)
  23. this._delegate.wall.positions = Transform.transformWGS84ArrayToCartesianArray(
  24. this._positions
  25. )
  26. return this
  27. }
  28. get positions() {
  29. return this._positions
  30. }
  31. _mountedHook() {
  32. /**
  33. * set the location
  34. */
  35. this.positions = this._positions
  36. }
  37. /**
  38. *
  39. * @param text
  40. * @param textStyle
  41. * @returns {Wall}
  42. */
  43. setLabel(text, textStyle) {
  44. return this
  45. }
  46. /**
  47. * Sets Style
  48. * @param style
  49. * @returns {Wall}
  50. */
  51. setStyle(style) {
  52. if (Object.keys(style).length === 0) {
  53. return this
  54. }
  55. delete style['positions']
  56. Util.merge(this._style, style)
  57. Util.merge(this._delegate.wall, style)
  58. return this
  59. }
  60. /**
  61. * Parses from entity
  62. * @param entity
  63. * @returns {Wall|any}
  64. */
  65. static fromEntity(entity) {
  66. let wall = undefined
  67. let now = Cesium.JulianDate.now()
  68. if (entity.polyline) {
  69. let positions = Transform.transformCartesianArrayToWGS84Array(
  70. entity.polyline.positions.getValue(now)
  71. )
  72. wall = new Wall(positions)
  73. wall.attr = {
  74. ...entity?.properties?.getValue(now)
  75. }
  76. }
  77. return wall
  78. }
  79. }
  80. Overlay.registerType('wall')
  81. export default Wall