You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /**
  2. * @Author: Caven
  3. * @Date: 2020-08-30 23:50:53
  4. */
  5. import { Cesium } from '@dc-modules/namespace'
  6. import { PlotEventType } from '@dc-modules/event'
  7. class Edit {
  8. constructor(overlay) {
  9. this._viewer = undefined
  10. this._layer = undefined
  11. this._overlay = overlay
  12. this._delegate = new Cesium.Entity()
  13. this._delegate.merge(overlay)
  14. this._options = {}
  15. this._positions = []
  16. }
  17. get editTool() {
  18. return this._viewer.editTool
  19. }
  20. /**
  21. *
  22. * @private
  23. */
  24. _mountedHook() {}
  25. /**
  26. *
  27. * @private
  28. */
  29. _mountAnchor() {}
  30. /**
  31. *
  32. * @param index
  33. * @param position
  34. * @private
  35. */
  36. _onAnchorMoving({ pickedAnchor, position }) {}
  37. /**
  38. *
  39. * @param pickedAnchor
  40. * @param position
  41. * @private
  42. */
  43. _onEditAnchorStop({ pickedAnchor, position }) {}
  44. /**
  45. *
  46. * @param pickedAnchor
  47. * @param position
  48. * @private
  49. */
  50. _onEditStop({ pickedAnchor, position }) {
  51. this._unbindEvent()
  52. this._viewer.editTool.deactivate()
  53. }
  54. /**
  55. *
  56. * @returns {Edit}
  57. * @private
  58. */
  59. _bindEvent() {
  60. this.editTool.on(PlotEventType.ANCHOR_MOVING, this._onAnchorMoving, this)
  61. this.editTool.on(
  62. PlotEventType.EDIT_ANCHOR_STOP,
  63. this._onEditAnchorStop,
  64. this
  65. )
  66. this.editTool.on(PlotEventType.EDIT_STOP, this._onEditStop, this)
  67. return this
  68. }
  69. /**
  70. *
  71. * @private
  72. */
  73. _unbindEvent() {
  74. this.editTool.off(PlotEventType.ANCHOR_MOVING, this._onAnchorMoving, this)
  75. this.editTool.off(
  76. PlotEventType.EDIT_ANCHOR_STOP,
  77. this._onEditAnchorStop,
  78. this
  79. )
  80. this.editTool.off(PlotEventType.EDIT_STOP, this._onEditStop, this)
  81. }
  82. /**
  83. *
  84. * @param measure
  85. * @param options
  86. * @returns {Edit}
  87. */
  88. start(measure, options) {
  89. this._viewer = measure.viewer
  90. this._layer = measure.layer
  91. this._options = options
  92. this._viewer.editTool.deactivate()
  93. this._viewer.editTool.activate(options)
  94. this._mountedHook()
  95. this._mountAnchor()
  96. this._unbindEvent()
  97. this._bindEvent()
  98. return this
  99. }
  100. }
  101. export default Edit