Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

ChartLayer.js 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /**
  2. * @Author : Caven Chen
  3. */
  4. import { getLib } from '../../global-api/lib-utils.js'
  5. import { Layer } from '../layer'
  6. import State from '../state/State.js'
  7. class ChartLayer extends Layer {
  8. constructor(id, option) {
  9. super(id)
  10. this._option = option
  11. this._delegate = undefined
  12. this._chart = undefined
  13. }
  14. set show(show) {
  15. this._show = show
  16. this._delegate.style.visibility = show ? 'visible' : 'hidden'
  17. }
  18. get show() {
  19. return this._show
  20. }
  21. /**
  22. *
  23. * @returns {HTMLDivElement}
  24. * @private
  25. */
  26. _createChartElement() {
  27. let canvas = this._viewer.scene.canvas
  28. let el = document.createElement('div')
  29. el.setAttribute('id', this._id)
  30. el.setAttribute('data-layer-type', 'chart-layer')
  31. el.style.cssText = `position:absolute; top:0; left:0; width: ${canvas.clientWidth}px; height: ${canvas.clientHeight}px;pointer-events:none;`
  32. this._viewer.layerContainer.appendChild(el)
  33. return el
  34. }
  35. _onAdd(viewer) {
  36. let echarts = getLib('echarts')
  37. if (!echarts) {
  38. throw new Error('')
  39. }
  40. this._viewer = viewer
  41. this._viewer.canvas.setAttribute('tabIndex', '0')
  42. this._delegate = this._createChartElement()
  43. this._chart = echarts.init(this._delegate)
  44. Object(this._chart.getZr()).viewer = viewer
  45. this._option &&
  46. this._chart.setOption({ ...this._option, GLMap: {}, animation: false })
  47. this._state = State.ADDED
  48. }
  49. _onRemove() {
  50. if (this._delegate && this._viewer) {
  51. this._chart.dispose()
  52. this._viewer.layerContainer.removeChild(this._delegate)
  53. this._state = State.REMOVED
  54. }
  55. }
  56. /**
  57. *
  58. * @param option
  59. * @returns {ChartLayer}
  60. */
  61. setOption(option = {}) {
  62. this._option = option
  63. if (this._chart) {
  64. this._chart.setOption({ ...option, GLMap: {}, animation: false })
  65. }
  66. return this
  67. }
  68. /**
  69. *
  70. * @returns {ChartLayer}
  71. */
  72. clear() {
  73. this._chart.clear()
  74. return this
  75. }
  76. /**
  77. *
  78. * @returns {ChartLayer}
  79. */
  80. resize() {
  81. this._chart.resize()
  82. return this
  83. }
  84. }
  85. export default ChartLayer