vue-cesium
Version:
Vue 3.x components for CesiumJS.
175 lines (173 loc) • 5.53 kB
JavaScript
"use strict";
class PolygonPrimitive {
constructor(options) {
const { defined, defaultValue, createGuid, BoundingSphere, Ellipsoid, ClassificationType, ArcType } = Cesium;
options = defaultValue(options, {});
this.show = defaultValue(options.show, true);
this._id = defined(options.id) ? options.id : createGuid();
this._ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);
this._appearance = defaultValue(options.appearance, new Cesium.MaterialAppearance());
this._depthFailAppearance = options.depthFailAppearance;
this._positions = defaultValue(options.positions, []);
this._polygonHierarchy = options.polygonHierarchy;
this._clampToGround = defaultValue(options.clampToGround, false);
this._classificationType = defaultValue(options.classificationType, ClassificationType.BOTH);
this._arcType = defaultValue(options.arcType, ArcType.RHUMB);
this._allowPicking = defaultValue(options.allowPicking, true);
this._asynchronous = defaultValue(options.asynchronous, false);
this._boundingSphere = new BoundingSphere();
this._primitive = void 0;
this._update = true;
}
get positions() {
return this._positions;
}
set positions(val) {
this._positions = val;
this._update = true;
}
get polygonHierarchy() {
return this._polygonHierarchy;
}
set polygonHierarchy(val) {
this._polygonHierarchy = val;
this._update = true;
}
get appearance() {
return this._appearance;
}
set appearance(val) {
this._appearance = val;
if (this._primitive !== void 0) {
this._primitive.appearance = val;
}
}
get depthFailAppearance() {
return this._depthFailAppearance;
}
set depthFailAppearance(val) {
this._depthFailAppearance = val;
if (this._primitive !== void 0 && this._primitive instanceof Cesium.Primitive) {
this._primitive.depthFailAppearance = val;
}
}
get id() {
return this._id;
}
set id(id) {
this._id = id;
}
get boundingVolume() {
return this._boundingSphere;
}
get ellipsoid() {
return this._ellipsoid;
}
get clampToGround() {
return this._clampToGround;
}
set clampToGround(val) {
this._clampToGround = val;
}
get classificationType() {
return this._classificationType;
}
set classificationType(e) {
this._classificationType = e;
this._update = true;
}
get allowPicking() {
return this._allowPicking;
}
set allowPicking(val) {
this._allowPicking = val;
}
get asynchronous() {
return this._asynchronous;
}
set asynchronous(val) {
this._asynchronous = val;
}
async update(frameState) {
if (this.show) {
const positions = this._polygonHierarchy ? this._polygonHierarchy.positions : this._positions;
if (positions.length < 3) {
this._primitive && this._primitive.destroy();
this._primitive = void 0;
} else {
if (this._update) {
this._update = false;
let promise;
if (this._clampToGround) {
promise = this._createGroundPolygon();
} else {
promise = this._createPolygon();
}
promise.then((primitive) => {
this._primitive && this._primitive.destroy();
this._primitive = void 0;
this._primitive = primitive;
this._primitive._vcParent = this;
this._boundingSphere = Cesium.BoundingSphere.fromPoints(positions, this._boundingSphere);
});
}
this._primitive && this._primitive.update(frameState);
}
}
}
async _createPolygon() {
const { Primitive, GeometryInstance, CoplanarPolygonGeometry, Cartesian3 } = Cesium;
return new Primitive({
geometryInstances: new GeometryInstance({
geometry: this._polygonHierarchy ? new CoplanarPolygonGeometry({
polygonHierarchy: this._polygonHierarchy,
ellipsoid: this._ellipsoid
}) : CoplanarPolygonGeometry.fromPositions({
positions: this._positions.map(function(e) {
return Cartesian3.clone(e);
}),
ellipsoid: this._ellipsoid
}),
id: this._id
}),
appearance: this._appearance,
depthFailAppearance: this._depthFailAppearance,
allowPicking: this._allowPicking,
asynchronous: this._asynchronous
});
}
async _createGroundPolygon() {
const { GroundPrimitive, GeometryInstance, PolygonGeometry, Cartesian3 } = Cesium;
await Cesium.GroundPrimitive.initializeTerrainHeights();
return new GroundPrimitive({
geometryInstances: new GeometryInstance({
geometry: this._polygonHierarchy ? new PolygonGeometry({
polygonHierarchy: this._polygonHierarchy,
ellipsoid: this._ellipsoid,
arcType: this._arcType
}) : PolygonGeometry.fromPositions({
positions: this._positions.map(function(e) {
return Cartesian3.clone(e);
}),
ellipsoid: this._ellipsoid,
arcType: this._arcType
}),
id: this._id
}),
appearance: this._appearance,
allowPicking: this._allowPicking,
asynchronous: this._asynchronous,
classificationType: this._classificationType
});
}
isDestroyed() {
return false;
}
destroy() {
this._primitive && this._primitive.destroy();
this._primitive = void 0;
return Cesium.destroyObject(this);
}
}
export { PolygonPrimitive as default };
//# sourceMappingURL=PolygonPrimitive.mjs.map