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.

PolylinePrimitive.js 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /**
  2. * @Author: Caven
  3. * @Date: 2021-06-03 21:16:27
  4. */
  5. import State from '@dc-modules/state/State'
  6. import Parse from '@dc-modules/parse/Parse'
  7. import { Util } from '@dc-modules/utils'
  8. import { Transform } from '@dc-modules/transform'
  9. import { center, distance } from '@dc-modules/math'
  10. import Overlay from '../Overlay'
  11. class PolylinePrimitive extends Overlay {
  12. constructor(positions) {
  13. super()
  14. this._positions = Parse.parsePositions(positions)
  15. this._delegate = {
  16. positions: []
  17. }
  18. this._state = State.INITIALIZED
  19. }
  20. get type() {
  21. return Overlay.getOverlayType('polyline_primitive')
  22. }
  23. set positions(positions) {
  24. this._positions = Parse.parsePositions(positions)
  25. this._delegate.positions = Transform.transformWGS84ArrayToCartesianArray(
  26. this._positions
  27. )
  28. return this
  29. }
  30. get positions() {
  31. return this._positions
  32. }
  33. get center() {
  34. return center(this._positions)
  35. }
  36. get distance() {
  37. return distance(this._positions)
  38. }
  39. _mountedHook() {
  40. /**
  41. * initialize the Overlay parameter
  42. */
  43. this.positions = this._positions
  44. }
  45. /**
  46. * Sets style
  47. * @param style
  48. * @returns {PolylinePrimitive}
  49. */
  50. setStyle(style) {
  51. if (!style || Object.keys(style).length === 0) {
  52. return this
  53. }
  54. delete style['positions']
  55. Util.merge(this._style, style)
  56. Util.merge(this._delegate, style)
  57. return this
  58. }
  59. }
  60. Overlay.registerType('polyline_primitive')
  61. export default PolylinePrimitive