浏览代码

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 查看文件

Cesium.Math.toRadians(this._position.roll) Cesium.Math.toRadians(this._position.roll)
) )
) )
})
}, false)
return this return this
} }



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

class Circle extends Overlay { class Circle extends Overlay {
constructor(center, radius) { constructor(center, radius) {
super() super()
this._delegate = new Cesium.Entity({ polygon: {} })
this._delegate = new Cesium.Entity({ ellipse: {} })
this._center = Parse.parsePosition(center) this._center = Parse.parsePosition(center)
this._radius = +radius || 0 this._radius = +radius || 0
this._rotateAmount = 0 this._rotateAmount = 0


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




set radius(radius) { set radius(radius) {
this._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 return this
} }




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


return this._rotateAmount 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() { _mountedHook() {
/** /**
* set the location * set the location
*/ */
this.center = this._center this.center = this._center
this.radius = this._radius
} }


/** /**
* @returns {Circle} * @returns {Circle}
*/ */
setLabel(text, textStyle) { setLabel(text, textStyle) {
this._delegate.position = Transform.transformWGS84ToCartesian(this._center)
this._delegate.label = { this._delegate.label = {
...textStyle, ...textStyle,
text: text text: text
if (!style || Object.keys(style).length === 0) { if (!style || Object.keys(style).length === 0) {
return this return this
} }
delete style['positions']
delete style['position'] &&
delete style['semiMajorAxis'] &&
delete style['semiMinorAxis']
Util.merge(this._style, style) Util.merge(this._style, style)
Util.merge(this._delegate.polygon, style)
Util.merge(this._delegate.ellipse, style)
return this return this
} }
} }

正在加载...
取消
保存