diff --git a/modules/overlay/model/Model.js b/modules/overlay/model/Model.js index 5933bd0f..b62ae52f 100644 --- a/modules/overlay/model/Model.js +++ b/modules/overlay/model/Model.js @@ -71,7 +71,7 @@ class Model extends Overlay { Cesium.Math.toRadians(this._position.roll) ) ) - }) + }, false) return this } diff --git a/modules/overlay/vector/Circle.js b/modules/overlay/vector/Circle.js index 09c4973f..3d92163f 100644 --- a/modules/overlay/vector/Circle.js +++ b/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 } }