UNPKG

angular-cesium

Version:
86 lines 10.6 kB
import { Component, Input } from '@angular/core'; import { CesiumService } from '../../services/cesium/cesium.service'; import { Checker } from '../../utils/checker'; import { MapTerrainProviderOptions } from '../../models/map-terrain-provider-options.enum'; /** * This component is used for adding a terrain provider service to the map (ac-map) * options according to selected terrain provider MapTerrainProviderOptions enum. * * * __Usage :__ * ``` * <ac-map-terrain-provider [options]="optionsObject" [provider]="myProvider"> * </ac-map-terrain-provider> * ``` */ export class AcMapTerrainProviderComponent { constructor(cesiumService) { this.cesiumService = cesiumService; /** * refer to cesium docs for details https://cesiumjs.org/Cesium/Build/Documentation/TerrainProvider.html */ this.options = {}; /** * show (optional) - Determines if the map layer is shown. */ this.show = true; } ngOnInit() { if (!Checker.present(this.options.url) && this.provider !== MapTerrainProviderOptions.Ellipsoid && this.provider !== MapTerrainProviderOptions.WorldTerrain) { throw new Error('options must have a url'); } this.defaultTerrainProvider = this.cesiumService.getViewer().terrainProvider; switch (this.provider) { case MapTerrainProviderOptions.CesiumTerrain: case MapTerrainProviderOptions.ArcGISTiledElevation: case MapTerrainProviderOptions.GoogleEarthEnterprise: case MapTerrainProviderOptions.VRTheWorld: case MapTerrainProviderOptions.Ellipsoid: this.terrainProvider = new this.provider(this.options); break; case MapTerrainProviderOptions.WorldTerrain: this.terrainProvider = this.provider(this.options); break; default: console.log('ac-map-terrain-provider: [provider] wasn\'t found. setting OFFLINE provider as default'); this.terrainProvider = this.defaultTerrainProvider; break; } if (this.show) { this.cesiumService.getViewer().terrainProvider = this.terrainProvider; } } ngOnChanges(changes) { if (changes['show'] && !changes['show'].isFirstChange()) { const showValue = changes['show'].currentValue; if (showValue) { if (this.terrainProvider) { this.cesiumService.getViewer().terrainProvider = this.terrainProvider; } } else { this.cesiumService.getViewer().terrainProvider = this.defaultTerrainProvider; } } } ngOnDestroy() { this.cesiumService.getViewer().terrainProvider = this.defaultTerrainProvider; } } AcMapTerrainProviderComponent.decorators = [ { type: Component, args: [{ selector: 'ac-map-terrain-provider', template: '' },] } ]; AcMapTerrainProviderComponent.ctorParameters = () => [ { type: CesiumService } ]; AcMapTerrainProviderComponent.propDecorators = { options: [{ type: Input }], provider: [{ type: Input }], show: [{ type: Input }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWMtbWFwLXRlcnJhaW4tcHJvdmlkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jZXNpdW0vc3JjL2xpYi9hbmd1bGFyLWNlc2l1bS9jb21wb25lbnRzL2FjLW1hcC10ZXJyYWluLXByb3ZpZGVyL2FjLW1hcC10ZXJyYWluLXByb3ZpZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUUzRjs7Ozs7Ozs7OztHQVVHO0FBS0gsTUFBTSxPQUFPLDZCQUE2QjtJQXVCeEMsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFyQmhEOztXQUVHO1FBRUgsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFRL0I7O1dBRUc7UUFFSCxTQUFJLEdBQUcsSUFBSSxDQUFDO0lBTVosQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztlQUNqQyxJQUFJLENBQUMsUUFBUSxLQUFLLHlCQUF5QixDQUFDLFNBQVM7ZUFDckQsSUFBSSxDQUFDLFFBQVEsS0FBSyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUU7WUFDN0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzVDO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO1FBQzdFLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNyQixLQUFLLHlCQUF5QixDQUFDLGFBQWEsQ0FBQztZQUM3QyxLQUFLLHlCQUF5QixDQUFDLG9CQUFvQixDQUFDO1lBQ3BELEtBQUsseUJBQXlCLENBQUMscUJBQXFCLENBQUM7WUFDckQsS0FBSyx5QkFBeUIsQ0FBQyxVQUFVLENBQUM7WUFDMUMsS0FBSyx5QkFBeUIsQ0FBQyxTQUFTO2dCQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZELE1BQU07WUFDUixLQUFLLHlCQUF5QixDQUFDLFlBQVk7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25ELE1BQU07WUFDUjtnQkFDRSxPQUFPLENBQUMsR0FBRyxDQUFDLHdGQUF3RixDQUFDLENBQUM7Z0JBQ3RHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO2dCQUNuRCxNQUFNO1NBQ1Q7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQ3ZFO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUN2RCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDO1lBQy9DLElBQUksU0FBUyxFQUFFO2dCQUNiLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtvQkFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztpQkFDdkU7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7YUFDOUU7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQy9FLENBQUM7OztZQXpFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsUUFBUSxFQUFFLEVBQUU7YUFDYjs7O1lBbEJRLGFBQWE7OztzQkF3Qm5CLEtBQUs7dUJBTUwsS0FBSzttQkFNTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDZXNpdW1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2VzaXVtL2Nlc2l1bS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hlY2tlciB9IGZyb20gJy4uLy4uL3V0aWxzL2NoZWNrZXInO1xyXG5pbXBvcnQgeyBNYXBUZXJyYWluUHJvdmlkZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL21hcC10ZXJyYWluLXByb3ZpZGVyLW9wdGlvbnMuZW51bSc7XHJcblxyXG4vKipcclxuICogIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgZm9yIGFkZGluZyBhIHRlcnJhaW4gcHJvdmlkZXIgc2VydmljZSB0byB0aGUgbWFwIChhYy1tYXApXHJcbiAqICBvcHRpb25zIGFjY29yZGluZyB0byBzZWxlY3RlZCB0ZXJyYWluIHByb3ZpZGVyIE1hcFRlcnJhaW5Qcm92aWRlck9wdGlvbnMgZW51bS5cclxuICpcclxuICpcclxuICogIF9fVXNhZ2UgOl9fXHJcbiAqICBgYGBcclxuICogICAgPGFjLW1hcC10ZXJyYWluLXByb3ZpZGVyIFtvcHRpb25zXT1cIm9wdGlvbnNPYmplY3RcIiBbcHJvdmlkZXJdPVwibXlQcm92aWRlclwiPlxyXG4gKiAgICA8L2FjLW1hcC10ZXJyYWluLXByb3ZpZGVyPlxyXG4gKiAgYGBgXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FjLW1hcC10ZXJyYWluLXByb3ZpZGVyJyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY01hcFRlcnJhaW5Qcm92aWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG5cclxuICAvKipcclxuICAgKiByZWZlciB0byBjZXNpdW0gZG9jcyBmb3IgZGV0YWlscyBodHRwczovL2Nlc2l1bWpzLm9yZy9DZXNpdW0vQnVpbGQvRG9jdW1lbnRhdGlvbi9UZXJyYWluUHJvdmlkZXIuaHRtbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgb3B0aW9uczogeyB1cmw/OiBzdHJpbmcgfSA9IHt9O1xyXG5cclxuICAvKipcclxuICAgKiB0aGUgcHJvdmlkZXJcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHByb3ZpZGVyOiBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIHNob3cgKG9wdGlvbmFsKSAtIERldGVybWluZXMgaWYgdGhlIG1hcCBsYXllciBpcyBzaG93bi5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNob3cgPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIHRlcnJhaW5Qcm92aWRlcjogYW55O1xyXG4gIHByaXZhdGUgZGVmYXVsdFRlcnJhaW5Qcm92aWRlcjogYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNlc2l1bVNlcnZpY2U6IENlc2l1bVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCFDaGVja2VyLnByZXNlbnQodGhpcy5vcHRpb25zLnVybClcclxuICAgICAgJiYgdGhpcy5wcm92aWRlciAhPT0gTWFwVGVycmFpblByb3ZpZGVyT3B0aW9ucy5FbGxpcHNvaWRcclxuICAgICAgJiYgdGhpcy5wcm92aWRlciAhPT0gTWFwVGVycmFpblByb3ZpZGVyT3B0aW9ucy5Xb3JsZFRlcnJhaW4pIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zIG11c3QgaGF2ZSBhIHVybCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kZWZhdWx0VGVycmFpblByb3ZpZGVyID0gdGhpcy5jZXNpdW1TZXJ2aWNlLmdldFZpZXdlcigpLnRlcnJhaW5Qcm92aWRlcjtcclxuICAgIHN3aXRjaCAodGhpcy5wcm92aWRlcikge1xyXG4gICAgICBjYXNlIE1hcFRlcnJhaW5Qcm92aWRlck9wdGlvbnMuQ2VzaXVtVGVycmFpbjpcclxuICAgICAgY2FzZSBNYXBUZXJyYWluUHJvdmlkZXJPcHRpb25zLkFyY0dJU1RpbGVkRWxldmF0aW9uOlxyXG4gICAgICBjYXNlIE1hcFRlcnJhaW5Qcm92aWRlck9wdGlvbnMuR29vZ2xlRWFydGhFbnRlcnByaXNlOlxyXG4gICAgICBjYXNlIE1hcFRlcnJhaW5Qcm92aWRlck9wdGlvbnMuVlJUaGVXb3JsZDpcclxuICAgICAgY2FzZSBNYXBUZXJyYWluUHJvdmlkZXJPcHRpb25zLkVsbGlwc29pZDpcclxuICAgICAgICB0aGlzLnRlcnJhaW5Qcm92aWRlciA9IG5ldyB0aGlzLnByb3ZpZGVyKHRoaXMub3B0aW9ucyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTWFwVGVycmFpblByb3ZpZGVyT3B0aW9ucy5Xb3JsZFRlcnJhaW46XHJcbiAgICAgICAgdGhpcy50ZXJyYWluUHJvdmlkZXIgPSB0aGlzLnByb3ZpZGVyKHRoaXMub3B0aW9ucyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2FjLW1hcC10ZXJyYWluLXByb3ZpZGVyOiBbcHJvdmlkZXJdIHdhc25cXCd0IGZvdW5kLiBzZXR0aW5nIE9GRkxJTkUgcHJvdmlkZXIgYXMgZGVmYXVsdCcpO1xyXG4gICAgICAgIHRoaXMudGVycmFpblByb3ZpZGVyID0gdGhpcy5kZWZhdWx0VGVycmFpblByb3ZpZGVyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2hvdykge1xyXG4gICAgICB0aGlzLmNlc2l1bVNlcnZpY2UuZ2V0Vmlld2VyKCkudGVycmFpblByb3ZpZGVyID0gdGhpcy50ZXJyYWluUHJvdmlkZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snc2hvdyddICYmICFjaGFuZ2VzWydzaG93J10uaXNGaXJzdENoYW5nZSgpKSB7XHJcbiAgICAgIGNvbnN0IHNob3dWYWx1ZSA9IGNoYW5nZXNbJ3Nob3cnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmIChzaG93VmFsdWUpIHtcclxuICAgICAgICBpZiAodGhpcy50ZXJyYWluUHJvdmlkZXIpIHtcclxuICAgICAgICAgIHRoaXMuY2VzaXVtU2VydmljZS5nZXRWaWV3ZXIoKS50ZXJyYWluUHJvdmlkZXIgPSB0aGlzLnRlcnJhaW5Qcm92aWRlcjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jZXNpdW1TZXJ2aWNlLmdldFZpZXdlcigpLnRlcnJhaW5Qcm92aWRlciA9IHRoaXMuZGVmYXVsdFRlcnJhaW5Qcm92aWRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNlc2l1bVNlcnZpY2UuZ2V0Vmlld2VyKCkudGVycmFpblByb3ZpZGVyID0gdGhpcy5kZWZhdWx0VGVycmFpblByb3ZpZGVyO1xyXG4gIH1cclxufVxyXG4iXX0=