Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

PolylinePrimitive.js 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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.type = Overlay.getOverlayType('polyline_primitive')
  19. this._state = State.INITIALIZED
  20. }
  21. set positions(positions) {
  22. this._positions = Parse.parsePositions(positions)
  23. this._delegate.positions = Transform.transformWGS84ArrayToCartesianArray(
  24. this._positions
  25. )
  26. return this
  27. }
  28. get positions() {
  29. return this._positions
  30. }
  31. get center() {
  32. return center(this._positions)
  33. }
  34. get distance() {
  35. return distance(this._positions)
  36. }
  37. _mountedHook() {
  38. /**
  39. * initialize the Overlay parameter
  40. */
  41. this.positions = this._positions
  42. }
  43. /**
  44. * Sets style
  45. * @param style
  46. * @returns {PolylinePrimitive}
  47. */
  48. setStyle(style) {
  49. if (!style || Object.keys(style).length === 0) {
  50. return this
  51. }
  52. delete style['positions']
  53. this._style = style
  54. Util.merge(this._delegate, this._style)
  55. return this
  56. }
  57. }
  58. Overlay.registerType('polyline_primitive')
  59. export default PolylinePrimitive