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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /**
  2. * @Author: Caven
  3. * @Date: 2021-11-08 20:35:42
  4. */
  5. import Overlay from '../Overlay'
  6. import State from '../../state/State'
  7. import Parse from '../../parse/Parse'
  8. import { Transform } from '../../transform'
  9. import { Util } from '../../utils'
  10. class CloudPrimitive extends Overlay {
  11. constructor(position) {
  12. super()
  13. this._position = Parse.parsePosition(position)
  14. this._delegate = {
  15. position: undefined,
  16. scale: { x: 12, y: 8 },
  17. }
  18. this._state = State.INITIALIZED
  19. }
  20. get type() {
  21. return Overlay.getOverlayType('cloud_primitive')
  22. }
  23. set position(position) {
  24. this._position = Parse.parsePosition(position)
  25. this._delegate.position = Transform.transformWGS84ToCartesian(
  26. this._position
  27. )
  28. }
  29. get position() {
  30. return this._position
  31. }
  32. _mountedHook() {
  33. /**
  34. * set the location
  35. */
  36. this.position = this._position
  37. }
  38. /**
  39. *
  40. * @param style
  41. * @returns {CloudPrimitive}
  42. */
  43. setStyle(style) {
  44. if (!style || Object.keys(style).length === 0) {
  45. return this
  46. }
  47. delete style['position']
  48. Util.merge(this._style, style)
  49. Util.merge(this._delegate, style)
  50. return this
  51. }
  52. }
  53. Overlay.registerType('cloud_primitive')
  54. export default CloudPrimitive