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.

MapvLayer.js 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /**
  2. * @Author: Caven
  3. * @Date: 2020-09-19 13:26:20
  4. */
  5. import { mapv } from '@dc-modules/namespace'
  6. import State from '@dc-modules/state/State'
  7. import { Layer } from '@dc-modules/layer'
  8. import Overlay from '../overlay/Overlay'
  9. class MapvLayer extends Layer {
  10. constructor(id, option = {}) {
  11. if (!mapv) {
  12. throw new Error('MapvLayer:miss mapv lib')
  13. }
  14. super(id)
  15. this._option = option
  16. this._dataSet = undefined
  17. this._delegate = undefined
  18. this._state = State.INITIALIZED
  19. }
  20. get type() {
  21. return Overlay.getOverlayType('mapv')
  22. }
  23. set show(show) {
  24. this._show = show
  25. if (this._delegate) {
  26. this._show ? this._delegate.show() : this._delegate.hide()
  27. }
  28. }
  29. get show() {
  30. return this._show
  31. }
  32. get state() {
  33. return this._state
  34. }
  35. /**
  36. *
  37. * @param {*} viewer
  38. * the layer added handler function
  39. * subclasses need to be overridden
  40. */
  41. _onAdd(viewer) {
  42. this._viewer = viewer
  43. this._delegate = new mapv.cesiumMapLayer(
  44. this._viewer.delegate,
  45. this._dataSet || new mapv.DataSet([]),
  46. this._option
  47. )
  48. viewer.scene.canvas.setAttribute('tabIndex', 0)
  49. this._state = State.ADDED
  50. }
  51. /**
  52. * the layer removed handler function
  53. * subclasses need to be overridden
  54. */
  55. _onRemove() {
  56. this._delegate && this._delegate.remove()
  57. this._state = State.REMOVED
  58. }
  59. /**
  60. *
  61. * @param {*} dataSet
  62. */
  63. setDataSet(dataSet) {
  64. this._dataSet = dataSet
  65. this._delegate &&
  66. this._delegate.update({ data: this._dataSet, option: this._option })
  67. }
  68. }
  69. Layer.registerType('mapv')
  70. export default MapvLayer