瀏覽代碼

improve the overlay

tags/2.13.0
Caven Chen 3 年之前
父節點
當前提交
f5e3e46a30
共有 2 個文件被更改,包括 12 次插入32 次删除
  1. 1
    1
      modules/overlay/model/Model.js
  2. 11
    31
      modules/overlay/vector/Circle.js

+ 1
- 1
modules/overlay/model/Model.js 查看文件

@@ -71,7 +71,7 @@ class Model extends Overlay {
Cesium.Math.toRadians(this._position.roll)
)
)
})
}, false)
return this
}


+ 11
- 31
modules/overlay/vector/Circle.js 查看文件

@@ -13,7 +13,7 @@ import Overlay from '../Overlay'
class Circle extends Overlay {
constructor(center, radius) {
super()
this._delegate = new Cesium.Entity({ polygon: {} })
this._delegate = new Cesium.Entity({ ellipse: {} })
this._center = Parse.parsePosition(center)
this._radius = +radius || 0
this._rotateAmount = 0
@@ -27,7 +27,7 @@ class Circle extends Overlay {

set center(center) {
this._center = Parse.parsePosition(center)
this._delegate.polygon.hierarchy = this._computeHierarchy()
this._delegate.position = Transform.transformWGS84ToCartesian(this._center)
return this
}

@@ -37,7 +37,8 @@ class Circle extends Overlay {

set radius(radius) {
this._radius = +radius
this._delegate.polygon.hierarchy = this._computeHierarchy()
this._delegate.ellipse.semiMajorAxis = this._radius
this._delegate.ellipse.semiMinorAxis = this._radius
return this
}

@@ -47,13 +48,13 @@ class Circle extends Overlay {

set rotateAmount(amount) {
this._rotateAmount = +amount
this._delegate.polygon.stRotation = new Cesium.CallbackProperty(() => {
this._delegate.ellipse.stRotation = new Cesium.CallbackProperty(() => {
this._stRotation += this._rotateAmount
if (this._stRotation >= 360 || this._stRotation <= -360) {
this._stRotation = 0
}
return Cesium.Math.toRadians(this._stRotation)
})
}, false)
return this
}

@@ -61,34 +62,12 @@ class Circle extends Overlay {
return this._rotateAmount
}

/**
*
* @private
*/
_computeHierarchy() {
let result = new Cesium.PolygonHierarchy()
let cep = Cesium.EllipseGeometryLibrary.computeEllipsePositions(
{
center: Transform.transformWGS84ToCartesian(this._center),
semiMajorAxis: this._radius,
semiMinorAxis: this._radius,
rotation: 0,
granularity: 0.005
},
false,
true
)
let pnts = Cesium.Cartesian3.unpackArray(cep.outerPositions)
pnts.push(pnts[0])
result.positions = pnts
return result
}

_mountedHook() {
/**
* set the location
*/
this.center = this._center
this.radius = this._radius
}

/**
@@ -98,7 +77,6 @@ class Circle extends Overlay {
* @returns {Circle}
*/
setLabel(text, textStyle) {
this._delegate.position = Transform.transformWGS84ToCartesian(this._center)
this._delegate.label = {
...textStyle,
text: text
@@ -115,9 +93,11 @@ class Circle extends Overlay {
if (!style || Object.keys(style).length === 0) {
return this
}
delete style['positions']
delete style['position'] &&
delete style['semiMajorAxis'] &&
delete style['semiMinorAxis']
Util.merge(this._style, style)
Util.merge(this._delegate.polygon, style)
Util.merge(this._delegate.ellipse, style)
return this
}
}

Loading…
取消
儲存