UNPKG

@eliorar/angular-cesium

Version:

Angular library for working with Cesium.

92 lines 11.5 kB
import { Component, Input } from '@angular/core'; import { Cesium3DTileset, Cesium3DTileStyle, PrimitiveCollection } from 'cesium'; import { Checker } from '../../utils/checker'; import * as i0 from "@angular/core"; import * as i1 from "../../services/cesium/cesium.service"; /** * This component is used for adding a 3d tileset layer to the map (ac-map). * options according to `Cesium3DTileset` definition. * check out: https://cesiumjs.org/Cesium/Build/Documentation/Cesium3DTileset.html * * * __Usage :__ * ``` * <ac-3d-tile-layer [options]="optionsObject"> * </ac-3d-tile-layer> * ``` */ export class AcTileset3dComponent { constructor(cesiumService) { this.cesiumService = cesiumService; /** * refer to cesium docs for details https://cesiumjs.org/Cesium/Build/Documentation/Cesium3DTileset.html */ this.options = { url: null }; /** * show (optional) - Determines if the map layer is shown. */ this.show = true; this.tilesetInstance = null; } ngOnInit() { if (!Checker.present(this.options.url)) { throw new Error('Options must have a url'); } this._3dtilesCollection = new PrimitiveCollection(); this.cesiumService.getScene().primitives.add(this._3dtilesCollection); if (this.show) { this.tilesetInstance = this._3dtilesCollection.add(Cesium3DTileset.fromUrl(this.options.url, {}), this.index); if (this.style) { this.tilesetInstance.style = new Cesium3DTileStyle(this.style); } } } ngOnChanges(changes) { if (changes['show'] && !changes['show'].isFirstChange()) { const showValue = changes['show'].currentValue; if (showValue) { if (this.tilesetInstance) { this._3dtilesCollection.add(this.tilesetInstance, this.index); } else { this.tilesetInstance = this._3dtilesCollection.add(Cesium3DTileset.fromUrl(this.options.url, {}), this.index); if (this.style) { this.tilesetInstance.style = new Cesium3DTileStyle(this.style); } } } else if (this.tilesetInstance) { this._3dtilesCollection.remove(this.tilesetInstance, false); } } if (changes['style'] && !changes['style'].isFirstChange()) { const styleValue = changes['style'].currentValue; if (this.tilesetInstance) { this.tilesetInstance.style = new Cesium3DTileStyle(this.style); } } } ngOnDestroy() { if (this.tilesetInstance) { this._3dtilesCollection.remove(this.tilesetInstance, false); } } } AcTileset3dComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AcTileset3dComponent, deps: [{ token: i1.CesiumService }], target: i0.ɵɵFactoryTarget.Component }); AcTileset3dComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: AcTileset3dComponent, selector: "ac-3d-tile-layer", inputs: { options: "options", index: "index", show: "show", style: "style" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AcTileset3dComponent, decorators: [{ type: Component, args: [{ selector: 'ac-3d-tile-layer', template: '', }] }], ctorParameters: function () { return [{ type: i1.CesiumService }]; }, propDecorators: { options: [{ type: Input }], index: [{ type: Input }], show: [{ type: Input }], style: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWMtdGlsZXNldC0zZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNlc2l1bS9zcmMvbGliL2FuZ3VsYXItY2VzaXVtL2NvbXBvbmVudHMvYWMtM2QtdGlsZXNldC9hYy10aWxlc2V0LTNkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBOEMsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFDLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUUvRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7OztBQUU1Qzs7Ozs7Ozs7Ozs7R0FXRztBQUtILE1BQU0sT0FBTyxvQkFBb0I7SUE0Qi9CLFlBQW9CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBM0JoRDs7V0FFRztRQUVILFlBQU8sR0FBaUIsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFRdEM7O1dBRUc7UUFFSCxTQUFJLEdBQUcsSUFBSSxDQUFDO1FBUUwsb0JBQWUsR0FBUSxJQUFJLENBQUM7SUFJbkMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUM1QztRQUVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXRFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5RyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDaEU7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDdkQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUUvQyxJQUFJLFNBQVMsRUFBRTtnQkFDYixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQy9EO3FCQUFNO29CQUNMLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDOUcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO3dCQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUNoRTtpQkFDRjthQUNGO2lCQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzdEO1NBQ0Y7UUFDRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUN6RCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDO1lBQ2pELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDaEU7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM3RDtJQUNILENBQUM7O2lIQTVFVSxvQkFBb0I7cUdBQXBCLG9CQUFvQiwySkFGckIsRUFBRTsyRkFFRCxvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7b0dBTUMsT0FBTztzQkFETixLQUFLO2dCQU9OLEtBQUs7c0JBREosS0FBSztnQkFPTixJQUFJO3NCQURILEtBQUs7Z0JBT04sS0FBSztzQkFESixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2VzaXVtM0RUaWxlc2V0LCBDZXNpdW0zRFRpbGVTdHlsZSwgUHJpbWl0aXZlQ29sbGVjdGlvbn0gZnJvbSAnY2VzaXVtJztcbmltcG9ydCB7Q2VzaXVtU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2VzaXVtL2Nlc2l1bS5zZXJ2aWNlJztcbmltcG9ydCB7Q2hlY2tlcn0gZnJvbSAnLi4vLi4vdXRpbHMvY2hlY2tlcic7XG5cbi8qKlxuICogIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgZm9yIGFkZGluZyBhIDNkIHRpbGVzZXQgbGF5ZXIgdG8gdGhlIG1hcCAoYWMtbWFwKS5cbiAqICBvcHRpb25zIGFjY29yZGluZyB0byBgQ2VzaXVtM0RUaWxlc2V0YCBkZWZpbml0aW9uLlxuICogIGNoZWNrIG91dDogaHR0cHM6Ly9jZXNpdW1qcy5vcmcvQ2VzaXVtL0J1aWxkL0RvY3VtZW50YXRpb24vQ2VzaXVtM0RUaWxlc2V0Lmh0bWxcbiAqXG4gKlxuICogIF9fVXNhZ2UgOl9fXG4gKiAgYGBgXG4gKiAgICA8YWMtM2QtdGlsZS1sYXllciBbb3B0aW9uc109XCJvcHRpb25zT2JqZWN0XCI+XG4gKiAgICA8L2FjLTNkLXRpbGUtbGF5ZXI+XG4gKiAgYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjLTNkLXRpbGUtbGF5ZXInLFxuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGNsYXNzIEFjVGlsZXNldDNkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiByZWZlciB0byBjZXNpdW0gZG9jcyBmb3IgZGV0YWlscyBodHRwczovL2Nlc2l1bWpzLm9yZy9DZXNpdW0vQnVpbGQvRG9jdW1lbnRhdGlvbi9DZXNpdW0zRFRpbGVzZXQuaHRtbFxuICAgKi9cbiAgQElucHV0KClcbiAgb3B0aW9uczogeyB1cmw6IGFueSB9ID0geyB1cmw6IG51bGwgfTtcblxuICAvKipcbiAgICogaW5kZXggKG9wdGlvbmFsKSAtIFRoZSBpbmRleCB0byBhZGQgdGhlIGxheWVyIGF0LiBJZiBvbWl0dGVkLCB0aGUgbGF5ZXIgd2lsbCBhZGRlZCBvbiB0b3Agb2YgYWxsIGV4aXN0aW5nIGxheWVycy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGluZGV4OiBOdW1iZXI7XG5cbiAgLyoqXG4gICAqIHNob3cgKG9wdGlvbmFsKSAtIERldGVybWluZXMgaWYgdGhlIG1hcCBsYXllciBpcyBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNob3cgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBzaG93IChvcHRpb25hbCkgLSBTZXRzIDNEdGlsZXMgc3R5bGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBzdHlsZTogYW55O1xuXG4gIHB1YmxpYyB0aWxlc2V0SW5zdGFuY2U6IGFueSA9IG51bGw7XG4gIHByaXZhdGUgXzNkdGlsZXNDb2xsZWN0aW9uOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZXNpdW1TZXJ2aWNlOiBDZXNpdW1TZXJ2aWNlKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIUNoZWNrZXIucHJlc2VudCh0aGlzLm9wdGlvbnMudXJsKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPcHRpb25zIG11c3QgaGF2ZSBhIHVybCcpO1xuICAgIH1cblxuICAgIHRoaXMuXzNkdGlsZXNDb2xsZWN0aW9uID0gbmV3IFByaW1pdGl2ZUNvbGxlY3Rpb24oKTtcbiAgICB0aGlzLmNlc2l1bVNlcnZpY2UuZ2V0U2NlbmUoKS5wcmltaXRpdmVzLmFkZCh0aGlzLl8zZHRpbGVzQ29sbGVjdGlvbik7XG5cbiAgICBpZiAodGhpcy5zaG93KSB7XG4gICAgICB0aGlzLnRpbGVzZXRJbnN0YW5jZSA9IHRoaXMuXzNkdGlsZXNDb2xsZWN0aW9uLmFkZChDZXNpdW0zRFRpbGVzZXQuZnJvbVVybCh0aGlzLm9wdGlvbnMudXJsLCB7fSksIHRoaXMuaW5kZXgpO1xuICAgICAgaWYgKHRoaXMuc3R5bGUpIHtcbiAgICAgICAgdGhpcy50aWxlc2V0SW5zdGFuY2Uuc3R5bGUgPSBuZXcgQ2VzaXVtM0RUaWxlU3R5bGUodGhpcy5zdHlsZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzaG93J10gJiYgIWNoYW5nZXNbJ3Nob3cnXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgIGNvbnN0IHNob3dWYWx1ZSA9IGNoYW5nZXNbJ3Nob3cnXS5jdXJyZW50VmFsdWU7XG5cbiAgICAgIGlmIChzaG93VmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMudGlsZXNldEluc3RhbmNlKSB7XG4gICAgICAgICAgdGhpcy5fM2R0aWxlc0NvbGxlY3Rpb24uYWRkKHRoaXMudGlsZXNldEluc3RhbmNlLCB0aGlzLmluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnRpbGVzZXRJbnN0YW5jZSA9IHRoaXMuXzNkdGlsZXNDb2xsZWN0aW9uLmFkZChDZXNpdW0zRFRpbGVzZXQuZnJvbVVybCh0aGlzLm9wdGlvbnMudXJsLCB7fSksIHRoaXMuaW5kZXgpO1xuICAgICAgICAgIGlmICh0aGlzLnN0eWxlKSB7XG4gICAgICAgICAgICB0aGlzLnRpbGVzZXRJbnN0YW5jZS5zdHlsZSA9IG5ldyBDZXNpdW0zRFRpbGVTdHlsZSh0aGlzLnN0eWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy50aWxlc2V0SW5zdGFuY2UpIHtcbiAgICAgICAgdGhpcy5fM2R0aWxlc0NvbGxlY3Rpb24ucmVtb3ZlKHRoaXMudGlsZXNldEluc3RhbmNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydzdHlsZSddICYmICFjaGFuZ2VzWydzdHlsZSddLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgY29uc3Qgc3R5bGVWYWx1ZSA9IGNoYW5nZXNbJ3N0eWxlJ10uY3VycmVudFZhbHVlO1xuICAgICAgaWYgKHRoaXMudGlsZXNldEluc3RhbmNlKSB7XG4gICAgICAgIHRoaXMudGlsZXNldEluc3RhbmNlLnN0eWxlID0gbmV3IENlc2l1bTNEVGlsZVN0eWxlKHRoaXMuc3R5bGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbGVzZXRJbnN0YW5jZSkge1xuICAgICAgdGhpcy5fM2R0aWxlc0NvbGxlY3Rpb24ucmVtb3ZlKHRoaXMudGlsZXNldEluc3RhbmNlLCBmYWxzZSk7XG4gICAgfVxuICB9XG59XG4iXX0=