angular-leaflet
Version:
Collection of angular components to build map views faster and with minimal configuration using the most popular library **LeafletJS**.
114 lines • 7.92 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ContentChildren, ElementRef, Input, QueryList } from '@angular/core';
import { map } from 'leaflet';
import { BaseLayer } from './base-layer';
import { MapHandler } from './map-handler';
export class LeafletComponent {
/**
* @param {?} elementRef
*/
constructor(elementRef) {
this.elementRef = elementRef;
this.layerIds = [];
this.handlerIds = [];
}
/**
* @return {?}
*/
ngOnInit() {
this.map = map(this.elementRef.nativeElement, Object.assign({}, this.options));
}
/**
* @return {?}
*/
ngAfterContentInit() {
this.addLayers();
this.layers.changes.subscribe(this.addLayers.bind(this));
this.addHandlers();
this.handlers.changes.subscribe(this.addHandlers.bind(this));
}
/**
* @private
* @return {?}
*/
addLayers() {
this.layers.filter((/**
* @param {?} layer
* @return {?}
*/
layer => !this.layerIds.includes(layer.id))).forEach(this.addLayer.bind(this));
}
/**
* @private
* @param {?} layer
* @return {?}
*/
addLayer(layer) {
layer.addTo(this.map);
this.layerIds = [...this.layerIds, layer.id];
}
/**
* @private
* @return {?}
*/
addHandlers() {
this.handlers.filter((/**
* @param {?} handler
* @return {?}
*/
handler => !this.handlerIds.includes(handler.id))).forEach(this.addHandler.bind(this));
}
/**
* @private
* @param {?} handler
* @return {?}
*/
addHandler(handler) {
handler.initialize(this.map);
this.handlerIds = [...this.handlerIds, handler.id];
}
}
LeafletComponent.decorators = [
{ type: Component, args: [{
selector: 'ngl-leaflet',
template: '<ng-content></ng-content>',
styles: [`
:host {
display: flex;
flex: 1 1 auto;
}
`]
}] }
];
/** @nocollapse */
LeafletComponent.ctorParameters = () => [
{ type: ElementRef }
];
LeafletComponent.propDecorators = {
options: [{ type: Input }],
layers: [{ type: ContentChildren, args: [BaseLayer,] }],
handlers: [{ type: ContentChildren, args: [MapHandler, { descendants: true },] }]
};
if (false) {
/** @type {?} */
LeafletComponent.prototype.options;
/** @type {?} */
LeafletComponent.prototype.layers;
/** @type {?} */
LeafletComponent.prototype.handlers;
/** @type {?} */
LeafletComponent.prototype.map;
/** @type {?} */
LeafletComponent.prototype.layerIds;
/** @type {?} */
LeafletComponent.prototype.handlerIds;
/**
* @type {?}
* @private
*/
LeafletComponent.prototype.elementRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhZmxldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWxlYWZsZXQvIiwic291cmNlcyI6WyJjb3JlL2xlYWZsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLEdBQUcsRUFBbUIsTUFBTSxTQUFTLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBYzNDLE1BQU0sT0FBTyxnQkFBZ0I7Ozs7SUFVM0IsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUgxQyxhQUFRLEdBQWEsRUFBRSxDQUFDO1FBQ3hCLGVBQVUsR0FBYSxFQUFFLENBQUM7SUFFbUIsQ0FBQzs7OztJQUU5QyxRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLG9CQUN2QyxJQUFJLENBQUMsT0FBTyxFQUNmLENBQUM7SUFDTCxDQUFDOzs7O0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQzs7Ozs7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNOzs7O1FBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25HLENBQUM7Ozs7OztJQUVPLFFBQVEsQ0FBQyxLQUFxQjtRQUNwQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOzs7OztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNOzs7O1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdHLENBQUM7Ozs7OztJQUVPLFVBQVUsQ0FBQyxPQUFtQjtRQUNwQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDOzs7WUF0REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2dCQUN2QixRQUFRLEVBQUUsMkJBQTJCO3lCQUVuQzs7Ozs7S0FLQzthQUVKOzs7O1lBaEJzRCxVQUFVOzs7c0JBa0I5RCxLQUFLO3FCQUVMLGVBQWUsU0FBQyxTQUFTO3VCQUN6QixlQUFlLFNBQUMsVUFBVSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTs7OztJQUhsRCxtQ0FBNkI7O0lBRTdCLGtDQUE4RDs7SUFDOUQsb0NBQW9GOztJQUVwRiwrQkFBUzs7SUFDVCxvQ0FBd0I7O0lBQ3hCLHNDQUEwQjs7Ozs7SUFFZCxzQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAsIE1hcCwgTWFwT3B0aW9ucyB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgQmFzZUxheWVyIH0gZnJvbSAnLi9iYXNlLWxheWVyJztcbmltcG9ydCB7IE1hcEhhbmRsZXIgfSBmcm9tICcuL21hcC1oYW5kbGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdsLWxlYWZsZXQnLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgfVxuICAgIGBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMZWFmbGV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCkgb3B0aW9uczogTWFwT3B0aW9ucztcblxuICBAQ29udGVudENoaWxkcmVuKEJhc2VMYXllcikgbGF5ZXJzOiBRdWVyeUxpc3Q8QmFzZUxheWVyPGFueT4+O1xuICBAQ29udGVudENoaWxkcmVuKE1hcEhhbmRsZXIsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgaGFuZGxlcnM6IFF1ZXJ5TGlzdDxNYXBIYW5kbGVyPjtcblxuICBtYXA6IE1hcDtcbiAgbGF5ZXJJZHM6IHN0cmluZ1tdID0gW107XG4gIGhhbmRsZXJJZHM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubWFwID0gbWFwKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAuLi50aGlzLm9wdGlvbnNcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmFkZExheWVycygpO1xuICAgIHRoaXMubGF5ZXJzLmNoYW5nZXMuc3Vic2NyaWJlKHRoaXMuYWRkTGF5ZXJzLmJpbmQodGhpcykpO1xuXG4gICAgdGhpcy5hZGRIYW5kbGVycygpO1xuICAgIHRoaXMuaGFuZGxlcnMuY2hhbmdlcy5zdWJzY3JpYmUodGhpcy5hZGRIYW5kbGVycy5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTGF5ZXJzKCkge1xuICAgIHRoaXMubGF5ZXJzLmZpbHRlcihsYXllciA9PiAhdGhpcy5sYXllcklkcy5pbmNsdWRlcyhsYXllci5pZCkpLmZvckVhY2godGhpcy5hZGRMYXllci5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTGF5ZXIobGF5ZXI6IEJhc2VMYXllcjxhbnk+KSB7XG4gICAgbGF5ZXIuYWRkVG8odGhpcy5tYXApO1xuICAgIHRoaXMubGF5ZXJJZHMgPSBbLi4udGhpcy5sYXllcklkcywgbGF5ZXIuaWRdO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRIYW5kbGVycygpIHtcbiAgICB0aGlzLmhhbmRsZXJzLmZpbHRlcihoYW5kbGVyID0+ICF0aGlzLmhhbmRsZXJJZHMuaW5jbHVkZXMoaGFuZGxlci5pZCkpLmZvckVhY2godGhpcy5hZGRIYW5kbGVyLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRIYW5kbGVyKGhhbmRsZXI6IE1hcEhhbmRsZXIpIHtcbiAgICBoYW5kbGVyLmluaXRpYWxpemUodGhpcy5tYXApO1xuICAgIHRoaXMuaGFuZGxlcklkcyA9IFsuLi50aGlzLmhhbmRsZXJJZHMsIGhhbmRsZXIuaWRdO1xuICB9XG59XG4iXX0=