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
JavaScript
/**
* @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==