angular-cesium
Version:
Angular library for working with Cesium.
86 lines • 10.6 kB
JavaScript
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=