UNPKG

angular-leaflet

Version:

Collection of angular components to build map views faster and with minimal configuration using the most popular library **LeafletJS**.

72 lines 5.54 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ContentChildren, forwardRef, QueryList } from '@angular/core'; import { BaseLayer } from '../../core/base-layer'; import { FeatureGroup } from 'leaflet'; export class FeatureGroupComponent extends BaseLayer { constructor() { super(...arguments); this.layerIds = []; } /** * @param {?} map * @return {?} */ addTo(map) { super.addTo(map); this.layerRef = new FeatureGroup(); this.mapRef.addLayer(this.layerRef); this.addLayers(); this.initHandlers(); this.layers.changes.subscribe(this.addLayers.bind(this)); } /** * @private * @return {?} */ addLayers() { this.layers .filter((/** * @param {?} layer * @return {?} */ layer => layer.id !== this.id)) .filter((/** * @param {?} layer * @return {?} */ layer => !this.layerIds.includes(layer.id))) .forEach(this.addLayer.bind(this)); } /** * @private * @param {?} layer * @return {?} */ addLayer(layer) { layer.addTo(this.layerRef); this.layerIds = [...this.layerIds, layer.id]; } } FeatureGroupComponent.decorators = [ { type: Component, args: [{ selector: 'ngl-feature-group', template: '', providers: [{ provide: BaseLayer, useExisting: forwardRef((/** * @return {?} */ () => FeatureGroupComponent)) }] }] } ]; FeatureGroupComponent.propDecorators = { layers: [{ type: ContentChildren, args: [BaseLayer,] }] }; if (false) { /** @type {?} */ FeatureGroupComponent.prototype.layers; /** @type {?} */ FeatureGroupComponent.prototype.layerIds; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWxlYWZsZXQvIiwic291cmNlcyI6WyJncm91cHMvZmVhdHVyZS1ncm91cC9mZWF0dXJlLWdyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBbUIsTUFBTSxTQUFTLENBQUM7QUFPeEQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFNBQXVCO0lBTGxFOztRQVFFLGFBQVEsR0FBYSxFQUFFLENBQUM7SUF5QjFCLENBQUM7Ozs7O0lBdkJDLEtBQUssQ0FBQyxHQUFxQjtRQUN6QixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDOzs7OztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsTUFBTTthQUNSLE1BQU07Ozs7UUFBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsRUFBQzthQUNyQyxNQUFNOzs7O1FBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBQzthQUNsRCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDOzs7Ozs7SUFFTyxRQUFRLENBQUMsS0FBcUI7UUFDcEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQzs7O1lBaENGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixRQUFRLEVBQUUsRUFBRTtnQkFDWixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVU7Ozt3QkFBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsRUFBQyxFQUFFLENBQUM7YUFDMUY7OztxQkFFRSxlQUFlLFNBQUMsU0FBUzs7OztJQUExQix1Q0FBOEQ7O0lBRTlELHlDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBmb3J3YXJkUmVmLCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VMYXllciB9IGZyb20gJy4uLy4uL2NvcmUvYmFzZS1sYXllcic7XG5pbXBvcnQgeyBGZWF0dXJlR3JvdXAsIExheWVyR3JvdXAsIE1hcCB9IGZyb20gJ2xlYWZsZXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2wtZmVhdHVyZS1ncm91cCcsXG4gIHRlbXBsYXRlOiAnJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBCYXNlTGF5ZXIsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZlYXR1cmVHcm91cENvbXBvbmVudCkgfV1cbn0pXG5leHBvcnQgY2xhc3MgRmVhdHVyZUdyb3VwQ29tcG9uZW50IGV4dGVuZHMgQmFzZUxheWVyPEZlYXR1cmVHcm91cD4ge1xuICBAQ29udGVudENoaWxkcmVuKEJhc2VMYXllcikgbGF5ZXJzOiBRdWVyeUxpc3Q8QmFzZUxheWVyPGFueT4+O1xuXG4gIGxheWVySWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGFkZFRvKG1hcDogTWFwIHwgTGF5ZXJHcm91cCk6IHZvaWQge1xuICAgIHN1cGVyLmFkZFRvKG1hcCk7XG4gICAgdGhpcy5sYXllclJlZiA9IG5ldyBGZWF0dXJlR3JvdXAoKTtcbiAgICB0aGlzLm1hcFJlZi5hZGRMYXllcih0aGlzLmxheWVyUmVmKTtcblxuICAgIHRoaXMuYWRkTGF5ZXJzKCk7XG5cbiAgICB0aGlzLmluaXRIYW5kbGVycygpO1xuXG4gICAgdGhpcy5sYXllcnMuY2hhbmdlcy5zdWJzY3JpYmUodGhpcy5hZGRMYXllcnMuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIGFkZExheWVycygpIHtcbiAgICB0aGlzLmxheWVyc1xuICAgICAgLmZpbHRlcihsYXllciA9PiBsYXllci5pZCAhPT0gdGhpcy5pZClcbiAgICAgIC5maWx0ZXIobGF5ZXIgPT4gIXRoaXMubGF5ZXJJZHMuaW5jbHVkZXMobGF5ZXIuaWQpKVxuICAgICAgLmZvckVhY2godGhpcy5hZGRMYXllci5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTGF5ZXIobGF5ZXI6IEJhc2VMYXllcjxhbnk+KSB7XG4gICAgbGF5ZXIuYWRkVG8odGhpcy5sYXllclJlZik7XG4gICAgdGhpcy5sYXllcklkcyA9IFsuLi50aGlzLmxheWVySWRzLCBsYXllci5pZF07XG4gIH1cbn1cbiJdfQ==