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.

Label.js 2.0KB

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