UNPKG

3.19 kBJavaScriptView Raw
1import { Directive, EventEmitter, Input, NgZone, Output } from '@angular/core';
2import { LeafletDirective } from '../core/leaflet.directive';
3import { LeafletDirectiveWrapper } from '../core/leaflet.directive.wrapper';
4import { LeafletUtil } from '../core/leaflet.util';
5/**
6 * Layer directive
7 *
8 * This directive is used to directly control a single map layer. The purpose of this directive is to
9 * be used as part of a child structural directive of the map element.
10 *
11 */
12var LeafletLayerDirective = /** @class */ (function () {
13 function LeafletLayerDirective(leafletDirective, zone) {
14 this.zone = zone;
15 // Layer Events
16 this.onAdd = new EventEmitter();
17 this.onRemove = new EventEmitter();
18 this.leafletDirective = new LeafletDirectiveWrapper(leafletDirective);
19 }
20 LeafletLayerDirective.prototype.ngOnInit = function () {
21 // Init the map
22 this.leafletDirective.init();
23 };
24 LeafletLayerDirective.prototype.ngOnDestroy = function () {
25 if (null != this.layer) {
26 // Unregister the event handlers
27 this.removeLayerEventListeners(this.layer);
28 // Remove the layer from the map
29 this.layer.remove();
30 }
31 };
32 LeafletLayerDirective.prototype.ngOnChanges = function (changes) {
33 var _this = this;
34 if (changes['layer']) {
35 // Update the layer
36 var p_1 = changes['layer'].previousValue;
37 var n_1 = changes['layer'].currentValue;
38 this.zone.runOutsideAngular(function () {
39 if (null != p_1) {
40 _this.removeLayerEventListeners(p_1);
41 p_1.remove();
42 }
43 if (null != n_1) {
44 _this.addLayerEventListeners(n_1);
45 _this.leafletDirective.getMap().addLayer(n_1);
46 }
47 });
48 }
49 };
50 LeafletLayerDirective.prototype.addLayerEventListeners = function (l) {
51 var _this = this;
52 this.onAddLayerHandler = function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onAdd, e); };
53 l.on('add', this.onAddLayerHandler);
54 this.onRemoveLayerHandler = function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onRemove, e); };
55 l.on('remove', this.onRemoveLayerHandler);
56 };
57 LeafletLayerDirective.prototype.removeLayerEventListeners = function (l) {
58 l.off('add', this.onAddLayerHandler);
59 l.off('remove', this.onRemoveLayerHandler);
60 };
61 LeafletLayerDirective.decorators = [
62 { type: Directive, args: [{
63 selector: '[leafletLayer]'
64 },] }
65 ];
66 LeafletLayerDirective.ctorParameters = function () { return [
67 { type: LeafletDirective },
68 { type: NgZone }
69 ]; };
70 LeafletLayerDirective.propDecorators = {
71 layer: [{ type: Input, args: ['leafletLayer',] }],
72 onAdd: [{ type: Output, args: ['leafletLayerAdd',] }],
73 onRemove: [{ type: Output, args: ['leafletLayerRemove',] }]
74 };
75 return LeafletLayerDirective;
76}());
77export { LeafletLayerDirective };
78//# sourceMappingURL=leaflet-layer.directive.js.map
\No newline at end of file