UNPKG

angular-cesium-ivy

Version:
88 lines 11 kB
import { Component, Input } from '@angular/core'; import { Checker } from '../../utils/checker'; import { MapTerrainProviderOptions } from '../../models/map-terrain-provider-options.enum'; import * as i0 from "@angular/core"; import * as i1 from "../../services/cesium/cesium.service"; /** * 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.ɵfac = function AcMapTerrainProviderComponent_Factory(t) { return new (t || AcMapTerrainProviderComponent)(i0.ɵɵdirectiveInject(i1.CesiumService)); }; AcMapTerrainProviderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AcMapTerrainProviderComponent, selectors: [["ac-map-terrain-provider"]], inputs: { options: "options", provider: "provider", show: "show" }, features: [i0.ɵɵNgOnChangesFeature], decls: 0, vars: 0, template: function AcMapTerrainProviderComponent_Template(rf, ctx) { }, encapsulation: 2 }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AcMapTerrainProviderComponent, [{ type: Component, args: [{ selector: 'ac-map-terrain-provider', template: '', }] }], function () { return [{ type: i1.CesiumService }]; }, { options: [{ type: Input }], provider: [{ type: Input }], show: [{ type: Input }] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWMtbWFwLXRlcnJhaW4tcHJvdmlkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jZXNpdW0vc3JjL2xpYi9hbmd1bGFyLWNlc2l1bS9jb21wb25lbnRzL2FjLW1hcC10ZXJyYWluLXByb3ZpZGVyL2FjLW1hcC10ZXJyYWluLXByb3ZpZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFFOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7QUFFM0Y7Ozs7Ozs7Ozs7R0FVRztBQUtILE1BQU0sT0FBTyw2QkFBNkI7SUF1QnhDLFlBQW9CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBckJoRDs7V0FFRztRQUVILFlBQU8sR0FBcUIsRUFBRSxDQUFDO1FBUS9COztXQUVHO1FBRUgsU0FBSSxHQUFHLElBQUksQ0FBQztJQU1aLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7ZUFDakMsSUFBSSxDQUFDLFFBQVEsS0FBSyx5QkFBeUIsQ0FBQyxTQUFTO2VBQ3JELElBQUksQ0FBQyxRQUFRLEtBQUsseUJBQXlCLENBQUMsWUFBWSxFQUFFO1lBQzdELE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQztRQUM3RSxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDckIsS0FBSyx5QkFBeUIsQ0FBQyxhQUFhLENBQUM7WUFDN0MsS0FBSyx5QkFBeUIsQ0FBQyxvQkFBb0IsQ0FBQztZQUNwRCxLQUFLLHlCQUF5QixDQUFDLHFCQUFxQixDQUFDO1lBQ3JELEtBQUsseUJBQXlCLENBQUMsVUFBVSxDQUFDO1lBQzFDLEtBQUsseUJBQXlCLENBQUMsU0FBUztnQkFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN2RCxNQUFNO1lBQ1IsS0FBSyx5QkFBeUIsQ0FBQyxZQUFZO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuRCxNQUFNO1lBQ1I7Z0JBQ0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3RkFBd0YsQ0FBQyxDQUFDO2dCQUN0RyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztnQkFDbkQsTUFBTTtTQUNUO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUN2RTtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDdkQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUMvQyxJQUFJLFNBQVMsRUFBRTtnQkFDYixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7aUJBQ3ZFO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO2FBQzlFO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUMvRSxDQUFDOzswR0FyRVUsNkJBQTZCO2dGQUE3Qiw2QkFBNkI7dUZBQTdCLDZCQUE2QjtjQUp6QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsUUFBUSxFQUFFLEVBQUU7YUFDYjtnRUFPQyxPQUFPO2tCQUROLEtBQUs7WUFPTixRQUFRO2tCQURQLEtBQUs7WUFPTixJQUFJO2tCQURILEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZXNpdW1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2VzaXVtL2Nlc2l1bS5zZXJ2aWNlJztcbmltcG9ydCB7IENoZWNrZXIgfSBmcm9tICcuLi8uLi91dGlscy9jaGVja2VyJztcbmltcG9ydCB7IE1hcFRlcnJhaW5Qcm92aWRlck9wdGlvbnMgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWFwLXRlcnJhaW4tcHJvdmlkZXItb3B0aW9ucy5lbnVtJztcblxuLyoqXG4gKiAgVGhpcyBjb21wb25lbnQgaXMgdXNlZCBmb3IgYWRkaW5nIGEgdGVycmFpbiBwcm92aWRlciBzZXJ2aWNlIHRvIHRoZSBtYXAgKGFjLW1hcClcbiAqICBvcHRpb25zIGFjY29yZGluZyB0byBzZWxlY3RlZCB0ZXJyYWluIHByb3ZpZGVyIE1hcFRlcnJhaW5Qcm92aWRlck9wdGlvbnMgZW51bS5cbiAqXG4gKlxuICogIF9fVXNhZ2UgOl9fXG4gKiAgYGBgXG4gKiAgICA8YWMtbWFwLXRlcnJhaW4tcHJvdmlkZXIgW29wdGlvbnNdPVwib3B0aW9uc09iamVjdFwiIFtwcm92aWRlcl09XCJteVByb3ZpZGVyXCI+XG4gKiAgICA8L2FjLW1hcC10ZXJyYWluLXByb3ZpZGVyPlxuICogIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYy1tYXAtdGVycmFpbi1wcm92aWRlcicsXG4gIHRlbXBsYXRlOiAnJyxcbn0pXG5leHBvcnQgY2xhc3MgQWNNYXBUZXJyYWluUHJvdmlkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICAvKipcbiAgICogcmVmZXIgdG8gY2VzaXVtIGRvY3MgZm9yIGRldGFpbHMgaHR0cHM6Ly9jZXNpdW1qcy5vcmcvQ2VzaXVtL0J1aWxkL0RvY3VtZW50YXRpb24vVGVycmFpblByb3ZpZGVyLmh0bWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIG9wdGlvbnM6IHsgdXJsPzogc3RyaW5nIH0gPSB7fTtcblxuICAvKipcbiAgICogdGhlIHByb3ZpZGVyXG4gICAqL1xuICBASW5wdXQoKVxuICBwcm92aWRlcjogYW55O1xuXG4gIC8qKlxuICAgKiBzaG93IChvcHRpb25hbCkgLSBEZXRlcm1pbmVzIGlmIHRoZSBtYXAgbGF5ZXIgaXMgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKVxuICBzaG93ID0gdHJ1ZTtcblxuICBwcml2YXRlIHRlcnJhaW5Qcm92aWRlcjogYW55O1xuICBwcml2YXRlIGRlZmF1bHRUZXJyYWluUHJvdmlkZXI6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNlc2l1bVNlcnZpY2U6IENlc2l1bVNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghQ2hlY2tlci5wcmVzZW50KHRoaXMub3B0aW9ucy51cmwpXG4gICAgICAmJiB0aGlzLnByb3ZpZGVyICE9PSBNYXBUZXJyYWluUHJvdmlkZXJPcHRpb25zLkVsbGlwc29pZFxuICAgICAgJiYgdGhpcy5wcm92aWRlciAhPT0gTWFwVGVycmFpblByb3ZpZGVyT3B0aW9ucy5Xb3JsZFRlcnJhaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3B0aW9ucyBtdXN0IGhhdmUgYSB1cmwnKTtcbiAgICB9XG4gICAgdGhpcy5kZWZhdWx0VGVycmFpblByb3ZpZGVyID0gdGhpcy5jZXNpdW1TZXJ2aWNlLmdldFZpZXdlcigpLnRlcnJhaW5Qcm92aWRlcjtcbiAgICBzd2l0Y2ggKHRoaXMucHJvdmlkZXIpIHtcbiAgICAgIGNhc2UgTWFwVGVycmFpblByb3ZpZGVyT3B0aW9ucy5DZXNpdW1UZXJyYWluOlxuICAgICAgY2FzZSBNYXBUZXJyYWluUHJvdmlkZXJPcHRpb25zLkFyY0dJU1RpbGVkRWxldmF0aW9uOlxuICAgICAgY2FzZSBNYXBUZXJyYWluUHJvdmlkZXJPcHRpb25zLkdvb2dsZUVhcnRoRW50ZXJwcmlzZTpcbiAgICAgIGNhc2UgTWFwVGVycmFpblByb3ZpZGVyT3B0aW9ucy5WUlRoZVdvcmxkOlxuICAgICAgY2FzZSBNYXBUZXJyYWluUHJvdmlkZXJPcHRpb25zLkVsbGlwc29pZDpcbiAgICAgICAgdGhpcy50ZXJyYWluUHJvdmlkZXIgPSBuZXcgdGhpcy5wcm92aWRlcih0aGlzLm9wdGlvbnMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTWFwVGVycmFpblByb3ZpZGVyT3B0aW9ucy5Xb3JsZFRlcnJhaW46XG4gICAgICAgIHRoaXMudGVycmFpblByb3ZpZGVyID0gdGhpcy5wcm92aWRlcih0aGlzLm9wdGlvbnMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUubG9nKCdhYy1tYXAtdGVycmFpbi1wcm92aWRlcjogW3Byb3ZpZGVyXSB3YXNuXFwndCBmb3VuZC4gc2V0dGluZyBPRkZMSU5FIHByb3ZpZGVyIGFzIGRlZmF1bHQnKTtcbiAgICAgICAgdGhpcy50ZXJyYWluUHJvdmlkZXIgPSB0aGlzLmRlZmF1bHRUZXJyYWluUHJvdmlkZXI7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG93KSB7XG4gICAgICB0aGlzLmNlc2l1bVNlcnZpY2UuZ2V0Vmlld2VyKCkudGVycmFpblByb3ZpZGVyID0gdGhpcy50ZXJyYWluUHJvdmlkZXI7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzaG93J10gJiYgIWNoYW5nZXNbJ3Nob3cnXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgIGNvbnN0IHNob3dWYWx1ZSA9IGNoYW5nZXNbJ3Nob3cnXS5jdXJyZW50VmFsdWU7XG4gICAgICBpZiAoc2hvd1ZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLnRlcnJhaW5Qcm92aWRlcikge1xuICAgICAgICAgIHRoaXMuY2VzaXVtU2VydmljZS5nZXRWaWV3ZXIoKS50ZXJyYWluUHJvdmlkZXIgPSB0aGlzLnRlcnJhaW5Qcm92aWRlcjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jZXNpdW1TZXJ2aWNlLmdldFZpZXdlcigpLnRlcnJhaW5Qcm92aWRlciA9IHRoaXMuZGVmYXVsdFRlcnJhaW5Qcm92aWRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNlc2l1bVNlcnZpY2UuZ2V0Vmlld2VyKCkudGVycmFpblByb3ZpZGVyID0gdGhpcy5kZWZhdWx0VGVycmFpblByb3ZpZGVyO1xuICB9XG59XG4iXX0=