UNPKG

sj-ng-webgl-globe

Version:

The fastest way to embed a 3D reactive globe in your Angular application using WebGL Earth. It is an open-source virtual globe made with HTML5 and Canvas WebGL technology. It comes with a JavaScript API adapting the popular LeafletJS API. On top of this A

164 lines 14.6 kB
/** * @fileoverview added by tsickle * Generated from: lib/sj-ng-webgl-globe.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ViewChild, ElementRef, Input, ViewEncapsulation } from '@angular/core'; /** * @record */ function Options() { } if (false) { /** @type {?|undefined} */ Options.prototype.center; /** @type {?|undefined} */ Options.prototype.zoom; /** @type {?|undefined} */ Options.prototype.altitude; /** @type {?|undefined} */ Options.prototype.atmosphere; /** @type {?|undefined} */ Options.prototype.sky; /** @type {?|undefined} */ Options.prototype.minAltitude; /** @type {?|undefined} */ Options.prototype.maxAltitude; /** @type {?|undefined} */ Options.prototype.dragging; /** @type {?|undefined} */ Options.prototype.tilting; /** @type {?|undefined} */ Options.prototype.zooming; /** @type {?|undefined} */ Options.prototype.scrollWheelZoom; /** @type {?|undefined} */ Options.prototype.unconstrainedRotation; /** @type {?|undefined} */ Options.prototype.proxyHost; } export class SjNgWebglGlobeComponent { // Marker data constructor() { this.options = { center: [null, null], zoom: null, altitude: 7000000, atmosphere: false, sky: false, minAltitude: 20, dragging: true, tilting: true, zooming: true, scrollWheelZoom: true, unconstrainedRotation: false, proxyHost: '' }; } /** * @return {?} */ ngOnInit() { this.options = { center: this.center, zoom: this.zoom, altitude: this.altitude, atmosphere: this.atmosphere, sky: this.sky, minAltitude: this.minAltitude, maxAltitude: this.maxAltitude, dragging: this.dragging, tilting: this.tilting, zooming: this.zooming, scrollWheelZoom: this.scrollWheelZoom, unconstrainedRotation: this.unconstrainedRotation, proxyHost: this.proxyHost }; this.globe = new WE.map(this.sjGlobe.nativeElement, this.options); WE.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors' }).addTo(this.globe); console.log(this.markers); if (this.markers !== undefined && this.markers.length > 0) { this.markers.forEach((/** * @param {?} m * @param {?} i * @return {?} */ (m, i) => { /** @type {?} */ const marker = WE.marker([m.latitude, m.longitude]).addTo(this.globe); if (m.isPopupEnable) { marker.bindPopup(m.popupHTML, { maxWidth: 200, closeButton: false }); } })); } } } SjNgWebglGlobeComponent.decorators = [ { type: Component, args: [{ selector: 'sj-ng-webgl-globe', template: "<div #sjGlobe></div>", encapsulation: ViewEncapsulation.None, styles: [` .cesium-credit-textContainer{ display: none; } `] }] } ]; /** @nocollapse */ SjNgWebglGlobeComponent.ctorParameters = () => []; SjNgWebglGlobeComponent.propDecorators = { sjGlobe: [{ type: ViewChild, args: ['sjGlobe', { static: true },] }], center: [{ type: Input, args: ['center',] }], zoom: [{ type: Input, args: ['zoom',] }], altitude: [{ type: Input, args: ['altitude',] }], atmosphere: [{ type: Input, args: ['atmosphere',] }], sky: [{ type: Input, args: ['sky',] }], minAltitude: [{ type: Input, args: ['minAltitude',] }], maxAltitude: [{ type: Input, args: ['maxAltitude',] }], dragging: [{ type: Input, args: ['dragging',] }], tilting: [{ type: Input, args: ['tilting',] }], zooming: [{ type: Input, args: ['zooming',] }], scrollWheelZoom: [{ type: Input, args: ['scrollWheelZoom',] }], unconstrainedRotation: [{ type: Input, args: ['unconstrainedRotation',] }], proxyHost: [{ type: Input, args: ['proxyHost',] }], markers: [{ type: Input, args: ['markers',] }] }; if (false) { /** @type {?} */ SjNgWebglGlobeComponent.prototype.globe; /** @type {?} */ SjNgWebglGlobeComponent.prototype.options; /** @type {?} */ SjNgWebglGlobeComponent.prototype.sjGlobe; /** @type {?} */ SjNgWebglGlobeComponent.prototype.center; /** @type {?} */ SjNgWebglGlobeComponent.prototype.zoom; /** @type {?} */ SjNgWebglGlobeComponent.prototype.altitude; /** @type {?} */ SjNgWebglGlobeComponent.prototype.atmosphere; /** @type {?} */ SjNgWebglGlobeComponent.prototype.sky; /** @type {?} */ SjNgWebglGlobeComponent.prototype.minAltitude; /** @type {?} */ SjNgWebglGlobeComponent.prototype.maxAltitude; /** @type {?} */ SjNgWebglGlobeComponent.prototype.dragging; /** @type {?} */ SjNgWebglGlobeComponent.prototype.tilting; /** @type {?} */ SjNgWebglGlobeComponent.prototype.zooming; /** @type {?} */ SjNgWebglGlobeComponent.prototype.scrollWheelZoom; /** @type {?} */ SjNgWebglGlobeComponent.prototype.unconstrainedRotation; /** @type {?} */ SjNgWebglGlobeComponent.prototype.proxyHost; /** @type {?} */ SjNgWebglGlobeComponent.prototype.markers; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2otbmctd2ViZ2wtZ2xvYmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vc2otbmctd2ViZ2wtZ2xvYmUvIiwic291cmNlcyI6WyJsaWIvc2otbmctd2ViZ2wtZ2xvYmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUluRyxzQkFjQzs7O0lBYkMseUJBQXVCOztJQUN2Qix1QkFBYzs7SUFDZCwyQkFBa0I7O0lBQ2xCLDZCQUFxQjs7SUFDckIsc0JBQWM7O0lBQ2QsOEJBQXFCOztJQUNyQiw4QkFBcUI7O0lBQ3JCLDJCQUFtQjs7SUFDbkIsMEJBQWtCOztJQUNsQiwwQkFBa0I7O0lBQ2xCLGtDQUEwQjs7SUFDMUIsd0NBQWdDOztJQUNoQyw0QkFBbUI7O0FBYXJCLE1BQU0sT0FBTyx1QkFBdUI7O0lBbUNsQztRQWhDQSxZQUFPLEdBQVk7WUFDakIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztZQUNwQixJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLEdBQUcsRUFBRSxLQUFLO1lBQ1YsV0FBVyxFQUFFLEVBQUU7WUFDZixRQUFRLEVBQUUsSUFBSTtZQUNkLE9BQU8sRUFBRSxJQUFJO1lBQ2IsT0FBTyxFQUFFLElBQUk7WUFDYixlQUFlLEVBQUUsSUFBSTtZQUNyQixxQkFBcUIsRUFBRSxLQUFLO1lBQzVCLFNBQVMsRUFBRSxFQUFFO1NBQ2QsQ0FBQztJQW1CYyxDQUFDOzs7O0lBRWpCLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFFBQVEsRUFBRSxJQUFJ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LCBPbkluaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmRlY2xhcmUgdmFyIFdFOiBhbnk7XG5cbmludGVyZmFjZSBPcHRpb25zIHtcbiAgY2VudGVyPzogQXJyYXk8bnVtYmVyPjsgLy8gTGF0LCBsbmcgY2VudGVyIG9mIHZpZXcuXG4gIHpvb20/OiBudW1iZXI7IC8vIFNldHMgem9vbS5cbiAgYWx0aXR1ZGU/OiBudW1iZXI7IC8vIFNldHMgYWx0aXR1ZGUgb2YgdmlldyBpbiBtZXRlcnMuXG4gIGF0bW9zcGhlcmU/OiBib29sZWFuOyAvLyBTaG93IHRoZSBhdGhtb3NwaGVyZS4gQmVzdCB1c2VkIHdpdGggYmxhY2sgYmFja2dyb3VuZCBzZXRzIGJ5IENTUy5cbiAgc2t5PzogYm9vbGVhbjsgLy8gU2hvdyBzdGFycy5cbiAgbWluQWx0aXR1ZGU/OiBudW1iZXI7IC8vIFNldHMgbG93ZXIgYWx0aXR1ZGUgbGltaXQgZm9yIGludGVyYWN0aW9ucy5cbiAgbWF4QWx0aXR1ZGU/OiBudW1iZXI7IC8vIFNldHMgdXBwZXIgYWx0aXR1ZGUgbGltaXQgZm9yIGludGVyYWN0aW9ucy5cbiAgZHJhZ2dpbmc/OiBib29sZWFuOyAvLyBBbGxvdyBpbnRlcmFjdGlvbi5cbiAgdGlsdGluZz86IGJvb2xlYW47IC8vIEFsbG93IHRpbHQgdGhlIHZpZXcuXG4gIHpvb21pbmc/OiBib29sZWFuOyAvLyBBbGxvdyB6b29taW5nLlxuICBzY3JvbGxXaGVlbFpvb20/OiBib29sZWFuOyAvLyBTZXRzIG1vdXNlIHNjcm9sbCB3aGVlbCB6b29tLlxuICB1bmNvbnN0cmFpbmVkUm90YXRpb24/OiBib29sZWFuOyAvLyBNb2RpZmllcyB0aGUgaW50ZXJhY3Rpb24gdG8gYWxsb3cgYXJiaXRyYXJ5IHJvdGF0aW9uICh1bmNvbnN0cmFpbmVkIGJ5IFogYXhpcykuXG4gIHByb3h5SG9zdD86IHN0cmluZzsgLy8gTGluayB0byBwcm94eSBtYXAgdGlsZXMgY3Jvc3MtZG9tYWluICh3aXRob3V0IENPUlMgaGVhZGVycyBvbiBzZXJ2ZXIpLlxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzai1uZy13ZWJnbC1nbG9iZScsXG4gIHRlbXBsYXRlVXJsOiAnc2otbmctd2ViZ2wtZ2xvYmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtgXG4gICAgLmNlc2l1bS1jcmVkaXQtdGV4dENvbnRhaW5lcntcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICBgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBTak5nV2ViZ2xHbG9iZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZ2xvYmU6IGFueTtcbiAgb3B0aW9uczogT3B0aW9ucyA9IHtcbiAgICBjZW50ZXI6IFtudWxsLCBudWxsXSxcbiAgICB6b29tOiBudWxsLFxuICAgIGFsdGl0dWRlOiA3MDAwMDAwLFxuICAgIGF0bW9zcGhlcmU6IGZhbHNlLFxuICAgIHNreTogZmFsc2UsXG4gICAgbWluQWx0aXR1ZGU6IDIwLFxuICAgIGRyYWdnaW5nOiB0cnVlLFxuICAgIHRpbHRpbmc6IHRydWUsXG4gICAgem9vbWluZzogdHJ1ZSxcbiAgICBzY3JvbGxXaGVlbFpvb206IHRydWUsXG4gICAgdW5jb25zdHJhaW5lZFJvdGF0aW9uOiBmYWxzZSxcbiAgICBwcm94eUhvc3Q6ICcnXG4gIH07XG5cbiAgQFZpZXdDaGlsZCgnc2pHbG9iZScsIHsgc3RhdGljOiB0cnVlIH0pIHNqR2xvYmU6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCdjZW50ZXInKSBjZW50ZXI/OiBBcnJheTxudW1iZXI+OyAvLyBMYXQsIGxuZyBjZW50ZXIgb2Ygdmlldy5cbiAgQElucHV0KCd6b29tJykgem9vbT86IG51bWJlcjsgLy8gU2V0cyB6b29tLlxuICBASW5wdXQoJ2FsdGl0dWRlJykgYWx0aXR1ZGU/OiBudW1iZXI7IC8vIFNldHMgYWx0aXR1ZGUgb2YgdmlldyBpbiBtZXRlcnMuXG4gIEBJbnB1dCgnYXRtb3NwaGVyZScpIGF0bW9zcGhlcmU/OiBib29sZWFuOyAvLyBTaG93IHRoZSBhdGhtb3NwaGVyZS4gQmVzdCB1c2VkIHdpdGggYmxhY2sgYmFja2dyb3VuZCBzZXRzIGJ5IENTUy5cbiAgQElucHV0KCdza3knKSBza3k/OiBib29sZWFuOyAvLyBTaG93IHN0YXJzLlxuICBASW5wdXQoJ21pbkFsdGl0dWRlJykgbWluQWx0aXR1ZGU/OiBudW1iZXI7IC8vIFNldHMgbG93ZXIgYWx0aXR1ZGUgbGltaXQgZm9yIGludGVyYWN0aW9ucy5cbiAgQElucHV0KCdtYXhBbHRpdHVkZScpIG1heEFsdGl0dWRlPzogbnVtYmVyOyAvLyBTZXRzIHVwcGVyIGFsdGl0dWRlIGxpbWl0IGZvciBpbnRlcmFjdGlvbnMuXG4gIEBJbnB1dCgnZHJhZ2dpbmcnKSBkcmFnZ2luZz86IGJvb2xlYW47IC8vIEFsbG93IGludGVyYWN0aW9uLlxuICBASW5wdXQoJ3RpbHRpbmcnKSB0aWx0aW5nPzogYm9vbGVhbjsgLy8gQWxsb3cgdGlsdCB0aGUgdmlldy5cbiAgQElucHV0KCd6b29taW5nJykgem9vbWluZz86IGJvb2xlYW47IC8vIEFsbG93IHpvb21pbmcuXG4gIEBJbnB1dCgnc2Nyb2xsV2hlZWxab29tJykgc2Nyb2xsV2hlZWxab29tPzogYm9vbGVhbjsgLy8gU2V0cyBtb3VzZSBzY3JvbGwgd2hlZWwgem9vbS5cbiAgQElucHV0KCd1bmNvbnN0cmFpbmVkUm90YXRpb24nKSB1bmNvbnN0cmFpbmVkUm90YXRpb24/OiBib29sZWFuOyAvLyBNb2RpZmllcyB0aGUgaW50ZXJhY3Rpb24gdG8gYWxsb3cgYXJiaXRyYXJ5IHJvdGF0aW9uICh1bmNvbnN0cmFpbmVkIGJ5IFogYXhpcykuXG4gIEBJbnB1dCgncHJveHlIb3N0JykgcHJveHlIb3N0Pzogc3RyaW5nOyAvLyBMaW5rIHRvIHByb3h5IG1hcCB0aWxlcyBjcm9zcy1kb21haW4gKHdpdGhvdXQgQ09SUyBoZWFkZXJzIG9uIHNlcnZlcikuXG5cbiAgQElucHV0KCdtYXJrZXJzJykgbWFya2VyczogQXJyYXk8YW55PjsgLy8gTWFya2VyIGRhdGFcbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICBjZW50ZXI6IHRoaXMuY2VudGVyLFxuICAgICAgem9vbTogdGhpcy56b29tLFxuICAgICAgYWx0aXR1ZGU6IHRoaXMuYWx0aXR1ZGUsXG4gICAgICBhdG1vc3BoZXJlOiB0aGlzLmF0bW9zcGhlcmUsXG4gICAgICBza3k6IHRoaXMuc2t5LFxuICAgICAgbWluQWx0aXR1ZGU6IHRoaXMubWluQWx0aXR1ZGUsXG4gICAgICBtYXhBbHRpdHVkZTogdGhpcy5tYXhBbHRpdHVkZSxcbiAgICAgIGRyYWdnaW5nOiB0aGlzLmRyYWdnaW5nLFxuICAgICAgdGlsdGluZzogdGhpcy50aWx0aW5nLFxuICAgICAgem9vbWluZzogdGhpcy56b29taW5nLFxuICAgICAgc2Nyb2xsV2hlZWxab29tOiB0aGlzLnNjcm9sbFdoZWVsWm9vbSxcbiAgICAgIHVuY29uc3RyYWluZWRSb3RhdGlvbjogdGhpcy51bmNvbnN0cmFpbmVkUm90YXRpb24sXG4gICAgICBwcm94eUhvc3Q6IHRoaXMucHJveHlIb3N0XG4gICAgfTtcbiAgICB0aGlzLmdsb2JlID0gbmV3IFdFLm1hcCh0aGlzLnNqR2xvYmUubmF0aXZlRWxlbWVudCwgdGhpcy5vcHRpb25zKTtcblxuICAgIFdFLnRpbGVMYXllcignaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLCB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ8KpIE9wZW5TdHJlZXRNYXAgY29udHJpYnV0b3JzJ1xuICAgIH0pLmFkZFRvKHRoaXMuZ2xvYmUpO1xuXG4gICAgY29uc29sZS5sb2codGhpcy5tYXJrZXJzKTtcbiAgICBpZiAodGhpcy5tYXJrZXJzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5tYXJrZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubWFya2Vycy5mb3JFYWNoKChtLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcmtlciA9IFdFLm1hcmtlcihbbS5sYXRpdHVkZSwgbS5sb25naXR1ZGVdKS5hZGRUbyh0aGlzLmdsb2JlKTtcbiAgICAgICAgaWYgKG0uaXNQb3B1cEVuYWJsZSkge1xuICAgICAgICAgIG1hcmtlci5iaW5kUG9wdXAobS5wb3B1cEhUTUwsIHsgbWF4V2lkdGg6IDIwMCwgY2xvc2VCdXR0b246IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxufVxuIl19