@artstesh/maps 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/bundles/maps-components-src-map.umd.js +182 -65
  2. package/dist/bundles/maps-components-src-map.umd.js.map +1 -1
  3. package/dist/bundles/maps-components.umd.js +182 -65
  4. package/dist/bundles/maps-components.umd.js.map +1 -1
  5. package/dist/esm2015/map/map-plate/layers/tile-layer/tile-layer.component.js +40 -6
  6. package/dist/esm2015/map/map-plate/layers/tile-layer/tile-layer.factory.js +50 -0
  7. package/dist/esm2015/map/map-plate/layers/tile-layer/tile-layer.settings.js +14 -8
  8. package/dist/esm2015/map/map.module.js +3 -3
  9. package/dist/esm2015/map/messages/commands/add-tile.command.js +12 -0
  10. package/dist/esm2015/map/messages/commands/remove-tile.command.js +12 -0
  11. package/dist/esm2015/map/services/map-management.service.js +19 -9
  12. package/dist/esm2015/map/services/message-registrator.service.js +5 -3
  13. package/dist/esm2015/src/map/map-plate/layers/tile-layer/tile-layer.component.js +40 -6
  14. package/dist/esm2015/src/map/map-plate/layers/tile-layer/tile-layer.factory.js +50 -0
  15. package/dist/esm2015/src/map/map-plate/layers/tile-layer/tile-layer.settings.js +14 -8
  16. package/dist/esm2015/src/map/map.module.js +3 -3
  17. package/dist/esm2015/src/map/messages/commands/add-tile.command.js +12 -0
  18. package/dist/esm2015/src/map/messages/commands/remove-tile.command.js +12 -0
  19. package/dist/esm2015/src/map/services/map-management.service.js +19 -9
  20. package/dist/esm2015/src/map/services/message-registrator.service.js +5 -3
  21. package/dist/fesm2015/maps-components-src-map.js +159 -60
  22. package/dist/fesm2015/maps-components-src-map.js.map +1 -1
  23. package/dist/fesm2015/maps-components.js +159 -60
  24. package/dist/fesm2015/maps-components.js.map +1 -1
  25. package/dist/map/map-plate/layers/tile-layer/tile-layer.component.d.ts +14 -5
  26. package/dist/map/map-plate/layers/tile-layer/tile-layer.factory.d.ts +11 -0
  27. package/dist/map/map-plate/layers/tile-layer/tile-layer.settings.d.ts +3 -2
  28. package/dist/map/map.module.d.ts +1 -1
  29. package/dist/map/messages/commands/add-tile.command.d.ts +9 -0
  30. package/dist/map/messages/commands/remove-tile.command.d.ts +9 -0
  31. package/dist/map/services/map-management.service.d.ts +2 -1
  32. package/dist/src/map/map-plate/layers/tile-layer/tile-layer.component.d.ts +14 -5
  33. package/dist/src/map/map-plate/layers/tile-layer/tile-layer.factory.d.ts +11 -0
  34. package/dist/src/map/map-plate/layers/tile-layer/tile-layer.settings.d.ts +3 -2
  35. package/dist/src/map/map.module.d.ts +1 -1
  36. package/dist/src/map/messages/commands/add-tile.command.d.ts +9 -0
  37. package/dist/src/map/messages/commands/remove-tile.command.d.ts +9 -0
  38. package/dist/src/map/services/map-management.service.d.ts +2 -1
  39. package/package.json +1 -1
  40. package/dist/esm2015/map/messages/commands/clear-layer.command.js +0 -12
  41. package/dist/esm2015/src/map/messages/commands/clear-layer.command.js +0 -12
  42. package/dist/map/messages/commands/clear-layer.command.d.ts +0 -7
  43. package/dist/src/map/messages/commands/clear-layer.command.d.ts +0 -7
@@ -3,7 +3,8 @@ import { AddLayerCommand } from '../messages/commands/add-layer.command';
3
3
  import { RemoveLayerCommand } from '../messages/commands/remove-layer.command';
4
4
  import { MapRenderedEvent } from '../messages';
5
5
  import { PlaceLayerFeaturesCommand } from '../messages/commands/place-layer-features.command';
6
- import { ClearLayerCommand } from '../messages/commands/clear-layer.command';
6
+ import { AddTileCommand } from '../messages/commands/add-tile.command';
7
+ import { RemoveTileCommand } from '../messages/commands/remove-tile.command';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "./map-postboy.service";
9
10
  export class MapManagementService {
@@ -14,19 +15,28 @@ export class MapManagementService {
14
15
  this.observeAddLayer();
15
16
  this.observeRemoveLayer();
16
17
  this.observePlaceFeatures();
17
- this.observeClearLayer();
18
+ this.observeAddTile();
19
+ this.observeRemoveTile();
20
+ }
21
+ observeRemoveTile() {
22
+ this.postboy.subscribe(RemoveTileCommand.ID).subscribe((c) => {
23
+ if (!this.map)
24
+ return;
25
+ this.map.removeLayer(c.layer);
26
+ });
27
+ }
28
+ observeAddTile() {
29
+ this.postboy.subscribe(AddTileCommand.ID).subscribe((c) => {
30
+ if (!this.map)
31
+ return;
32
+ this.map.addLayer(c.layer);
33
+ });
18
34
  }
19
35
  observeMapRender() {
20
36
  this.postboy.subscribe(MapRenderedEvent.ID).subscribe((m) => {
21
37
  this.map = m.map;
22
38
  });
23
39
  }
24
- observeClearLayer() {
25
- this.postboy.subscribe(ClearLayerCommand.ID).subscribe((c) => {
26
- var _a, _b;
27
- (_b = (_a = this.layers[c.layer]) === null || _a === void 0 ? void 0 : _a.getSource()) === null || _b === void 0 ? void 0 : _b.clear();
28
- });
29
- }
30
40
  observeAddLayer() {
31
41
  this.postboy.subscribe(AddLayerCommand.ID).subscribe((c) => {
32
42
  if (!this.map)
@@ -58,4 +68,4 @@ MapManagementService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0",
58
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapManagementService, decorators: [{
59
69
  type: Injectable
60
70
  }], ctorParameters: function () { return [{ type: i1.MapPostboyService }]; } });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLW1hbmFnZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHMtY29tcG9uZW50cy9zcmMvbWFwL3NlcnZpY2VzL21hcC1tYW5hZ2VtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7QUFHN0UsTUFBTSxPQUFPLG9CQUFvQjtJQUkvQixZQUFvQixPQUEwQjtRQUExQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUZ0QyxXQUFNLEdBQWlELEVBQUUsQ0FBQztRQUdoRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBbUIsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDNUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBb0IsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7O1lBQzlFLE1BQUEsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsMENBQUUsU0FBUyxFQUFFLDBDQUFFLEtBQUssRUFBRSxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQWtCLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTztZQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUMzQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUE0Qix5QkFBeUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTs7WUFDOUYsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPO1lBQ2xDLE1BQUEsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsMENBQUUsU0FBUyxFQUFFLDBDQUFFLEtBQUssRUFBRSxDQUFDO1lBQzNDLE1BQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxFQUFFLDBDQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFxQixrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoRixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTztZQUN0QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztrSEE5Q1Usb0JBQW9CO3NIQUFwQixvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hcCB9IGZyb20gJ29sJztcbmltcG9ydCB7IE1hcFBvc3Rib3lTZXJ2aWNlIH0gZnJvbSAnLi9tYXAtcG9zdGJveS5zZXJ2aWNlJztcbmltcG9ydCB7IEFkZExheWVyQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL2FkZC1sYXllci5jb21tYW5kJztcbmltcG9ydCB7IFJlbW92ZUxheWVyQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL3JlbW92ZS1sYXllci5jb21tYW5kJztcbmltcG9ydCB7IFZlY3RvciBhcyBMYXllciB9IGZyb20gJ29sL2xheWVyJztcbmltcG9ydCBWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5pbXBvcnQgeyBNYXBSZW5kZXJlZEV2ZW50IH0gZnJvbSAnLi4vbWVzc2FnZXMnO1xuaW1wb3J0IHsgUGxhY2VMYXllckZlYXR1cmVzQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL3BsYWNlLWxheWVyLWZlYXR1cmVzLmNvbW1hbmQnO1xuaW1wb3J0IHsgQ2xlYXJMYXllckNvbW1hbmQgfSBmcm9tICcuLi9tZXNzYWdlcy9jb21tYW5kcy9jbGVhci1sYXllci5jb21tYW5kJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1hcE1hbmFnZW1lbnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtYXA/OiBNYXA7XG4gIHByaXZhdGUgbGF5ZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBMYXllcjxWZWN0b3JTb3VyY2U8YW55Pj4gfSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9zdGJveTogTWFwUG9zdGJveVNlcnZpY2UpIHtcbiAgICB0aGlzLm9ic2VydmVNYXBSZW5kZXIoKTtcbiAgICB0aGlzLm9ic2VydmVBZGRMYXllcigpO1xuICAgIHRoaXMub2JzZXJ2ZVJlbW92ZUxheWVyKCk7XG4gICAgdGhpcy5vYnNlcnZlUGxhY2VGZWF0dXJlcygpO1xuICAgIHRoaXMub2JzZXJ2ZUNsZWFyTGF5ZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZU1hcFJlbmRlcigpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3Vic2NyaWJlPE1hcFJlbmRlcmVkRXZlbnQ+KE1hcFJlbmRlcmVkRXZlbnQuSUQpLnN1YnNjcmliZSgobSkgPT4ge1xuICAgICAgdGhpcy5tYXAgPSBtLm1hcDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUNsZWFyTGF5ZXIoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YnNjcmliZTxDbGVhckxheWVyQ29tbWFuZD4oQ2xlYXJMYXllckNvbW1hbmQuSUQpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgdGhpcy5sYXllcnNbYy5sYXllcl0/LmdldFNvdXJjZSgpPy5jbGVhcigpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlQWRkTGF5ZXIoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YnNjcmliZTxBZGRMYXllckNvbW1hbmQ+KEFkZExheWVyQ29tbWFuZC5JRCkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICBpZiAoIXRoaXMubWFwKSByZXR1cm47XG4gICAgICB0aGlzLmxheWVyc1tjLmxheWVyLmdldCgnbmFtZScpXSA9IGMubGF5ZXI7XG4gICAgICB0aGlzLm1hcC5hZGRMYXllcihjLmxheWVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZVBsYWNlRmVhdHVyZXMoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YnNjcmliZTxQbGFjZUxheWVyRmVhdHVyZXNDb21tYW5kPihQbGFjZUxheWVyRmVhdHVyZXNDb21tYW5kLklEKS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIGlmICghdGhpcy5sYXllcnNbYy5sYXllcl0pIHJldHVybjtcbiAgICAgIHRoaXMubGF5ZXJzW2MubGF5ZXJdPy5nZXRTb3VyY2UoKT8uY2xlYXIoKTtcbiAgICAgIHRoaXMubGF5ZXJzW2MubGF5ZXJdLmdldFNvdXJjZSgpPy5hZGRGZWF0dXJlcyhjLmZlYXR1cmVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZVJlbW92ZUxheWVyKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWJzY3JpYmU8UmVtb3ZlTGF5ZXJDb21tYW5kPihSZW1vdmVMYXllckNvbW1hbmQuSUQpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgaWYgKCF0aGlzLm1hcCkgcmV0dXJuO1xuICAgICAgZGVsZXRlIHRoaXMubGF5ZXJzW2MubGF5ZXIuZ2V0KCduYW1lJyldO1xuICAgICAgdGhpcy5tYXAucmVtb3ZlTGF5ZXIoYy5sYXllcik7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLW1hbmFnZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHMtY29tcG9uZW50cy9zcmMvbWFwL3NlcnZpY2VzL21hcC1tYW5hZ2VtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7O0FBRzdFLE1BQU0sT0FBTyxvQkFBb0I7SUFJL0IsWUFBb0IsT0FBMEI7UUFBMUIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFGdEMsV0FBTSxHQUFpRCxFQUFFLENBQUM7UUFHaEUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFvQixpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM5RSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTztZQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBaUIsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFBRSxPQUFPO1lBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQW1CLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFrQixlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU87WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBNEIseUJBQXlCLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7O1lBQzlGLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQUUsT0FBTztZQUNsQyxNQUFBLE1BQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLDBDQUFFLFNBQVMsRUFBRSwwQ0FBRSxLQUFLLEVBQUUsQ0FBQztZQUMzQyxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSwwQ0FBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBcUIsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDaEYsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU87WUFDdEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7a0hBdkRVLG9CQUFvQjtzSEFBcEIsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXAgfSBmcm9tICdvbCc7XG5pbXBvcnQgeyBNYXBQb3N0Ym95U2VydmljZSB9IGZyb20gJy4vbWFwLXBvc3Rib3kuc2VydmljZSc7XG5pbXBvcnQgeyBBZGRMYXllckNvbW1hbmQgfSBmcm9tICcuLi9tZXNzYWdlcy9jb21tYW5kcy9hZGQtbGF5ZXIuY29tbWFuZCc7XG5pbXBvcnQgeyBSZW1vdmVMYXllckNvbW1hbmQgfSBmcm9tICcuLi9tZXNzYWdlcy9jb21tYW5kcy9yZW1vdmUtbGF5ZXIuY29tbWFuZCc7XG5pbXBvcnQgeyBWZWN0b3IgYXMgTGF5ZXIgfSBmcm9tICdvbC9sYXllcic7XG5pbXBvcnQgVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0IHsgTWFwUmVuZGVyZWRFdmVudCB9IGZyb20gJy4uL21lc3NhZ2VzJztcbmltcG9ydCB7IFBsYWNlTGF5ZXJGZWF0dXJlc0NvbW1hbmQgfSBmcm9tICcuLi9tZXNzYWdlcy9jb21tYW5kcy9wbGFjZS1sYXllci1mZWF0dXJlcy5jb21tYW5kJztcbmltcG9ydCB7IEFkZFRpbGVDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvYWRkLXRpbGUuY29tbWFuZCc7XG5pbXBvcnQgeyBSZW1vdmVUaWxlQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL3JlbW92ZS10aWxlLmNvbW1hbmQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWFwTWFuYWdlbWVudFNlcnZpY2Uge1xuICBwcml2YXRlIG1hcD86IE1hcDtcbiAgcHJpdmF0ZSBsYXllcnM6IHsgW25hbWU6IHN0cmluZ106IExheWVyPFZlY3RvclNvdXJjZTxhbnk+PiB9ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb3N0Ym95OiBNYXBQb3N0Ym95U2VydmljZSkge1xuICAgIHRoaXMub2JzZXJ2ZU1hcFJlbmRlcigpO1xuICAgIHRoaXMub2JzZXJ2ZUFkZExheWVyKCk7XG4gICAgdGhpcy5vYnNlcnZlUmVtb3ZlTGF5ZXIoKTtcbiAgICB0aGlzLm9ic2VydmVQbGFjZUZlYXR1cmVzKCk7XG4gICAgdGhpcy5vYnNlcnZlQWRkVGlsZSgpO1xuICAgIHRoaXMub2JzZXJ2ZVJlbW92ZVRpbGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZVJlbW92ZVRpbGUoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YnNjcmliZTxSZW1vdmVUaWxlQ29tbWFuZD4oUmVtb3ZlVGlsZUNvbW1hbmQuSUQpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgaWYgKCF0aGlzLm1hcCkgcmV0dXJuO1xuICAgICAgdGhpcy5tYXAucmVtb3ZlTGF5ZXIoYy5sYXllcik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVBZGRUaWxlKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWJzY3JpYmU8QWRkVGlsZUNvbW1hbmQ+KEFkZFRpbGVDb21tYW5kLklEKS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIGlmICghdGhpcy5tYXApIHJldHVybjtcbiAgICAgIHRoaXMubWFwLmFkZExheWVyKGMubGF5ZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTWFwUmVuZGVyKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWJzY3JpYmU8TWFwUmVuZGVyZWRFdmVudD4oTWFwUmVuZGVyZWRFdmVudC5JRCkuc3Vic2NyaWJlKChtKSA9PiB7XG4gICAgICB0aGlzLm1hcCA9IG0ubWFwO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlQWRkTGF5ZXIoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YnNjcmliZTxBZGRMYXllckNvbW1hbmQ+KEFkZExheWVyQ29tbWFuZC5JRCkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICBpZiAoIXRoaXMubWFwKSByZXR1cm47XG4gICAgICB0aGlzLmxheWVyc1tjLmxheWVyLmdldCgnbmFtZScpXSA9IGMubGF5ZXI7XG4gICAgICB0aGlzLm1hcC5hZGRMYXllcihjLmxheWVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZVBsYWNlRmVhdHVyZXMoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YnNjcmliZTxQbGFjZUxheWVyRmVhdHVyZXNDb21tYW5kPihQbGFjZUxheWVyRmVhdHVyZXNDb21tYW5kLklEKS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIGlmICghdGhpcy5sYXllcnNbYy5sYXllcl0pIHJldHVybjtcbiAgICAgIHRoaXMubGF5ZXJzW2MubGF5ZXJdPy5nZXRTb3VyY2UoKT8uY2xlYXIoKTtcbiAgICAgIHRoaXMubGF5ZXJzW2MubGF5ZXJdLmdldFNvdXJjZSgpPy5hZGRGZWF0dXJlcyhjLmZlYXR1cmVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZVJlbW92ZUxheWVyKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWJzY3JpYmU8UmVtb3ZlTGF5ZXJDb21tYW5kPihSZW1vdmVMYXllckNvbW1hbmQuSUQpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgaWYgKCF0aGlzLm1hcCkgcmV0dXJuO1xuICAgICAgZGVsZXRlIHRoaXMubGF5ZXJzW2MubGF5ZXIuZ2V0KCduYW1lJyldO1xuICAgICAgdGhpcy5tYXAucmVtb3ZlTGF5ZXIoYy5sYXllcik7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -4,7 +4,8 @@ import { MapRenderedEvent } from '../messages';
4
4
  import { AddLayerCommand } from '../messages/commands/add-layer.command';
5
5
  import { PlaceLayerFeaturesCommand } from '../messages/commands/place-layer-features.command';
6
6
  import { RemoveLayerCommand } from '../messages/commands/remove-layer.command';
7
- import { ClearLayerCommand } from '../messages/commands/clear-layer.command';
7
+ import { AddTileCommand } from '../messages/commands/add-tile.command';
8
+ import { RemoveTileCommand } from '../messages/commands/remove-tile.command';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "./map-postboy.service";
10
11
  export class MessageRegistratorService {
@@ -13,7 +14,8 @@ export class MessageRegistratorService {
13
14
  service.register(AddLayerCommand.ID, new Subject());
14
15
  service.register(PlaceLayerFeaturesCommand.ID, new ReplaySubject(1));
15
16
  service.register(RemoveLayerCommand.ID, new Subject());
16
- service.register(ClearLayerCommand.ID, new Subject());
17
+ service.register(AddTileCommand.ID, new Subject());
18
+ service.register(RemoveTileCommand.ID, new Subject());
17
19
  }
18
20
  }
19
21
  MessageRegistratorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MessageRegistratorService, deps: [{ token: i1.MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -21,4 +23,4 @@ MessageRegistratorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.
21
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MessageRegistratorService, decorators: [{
22
24
  type: Injectable
23
25
  }], ctorParameters: function () { return [{ type: i1.MapPostboyService }]; } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1yZWdpc3RyYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwcy1jb21wb25lbnRzL3NyYy9tYXAvc2VydmljZXMvbWVzc2FnZS1yZWdpc3RyYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7O0FBRzdFLE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsWUFBWSxPQUEwQjtRQUNwQyxPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxJQUFJLGFBQWEsQ0FBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RSxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxPQUFPLEVBQW1CLENBQUMsQ0FBQztRQUNyRSxPQUFPLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsRUFBRSxJQUFJLGFBQWEsQ0FBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRyxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxJQUFJLE9BQU8sRUFBc0IsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksT0FBTyxFQUFxQixDQUFDLENBQUM7SUFDM0UsQ0FBQzs7dUhBUFUseUJBQXlCOzJIQUF6Qix5QkFBeUI7NEZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hcFBvc3Rib3lTZXJ2aWNlIH0gZnJvbSAnLi9tYXAtcG9zdGJveS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hcFJlbmRlcmVkRXZlbnQgfSBmcm9tICcuLi9tZXNzYWdlcyc7XG5pbXBvcnQgeyBBZGRMYXllckNvbW1hbmQgfSBmcm9tICcuLi9tZXNzYWdlcy9jb21tYW5kcy9hZGQtbGF5ZXIuY29tbWFuZCc7XG5pbXBvcnQgeyBQbGFjZUxheWVyRmVhdHVyZXNDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvcGxhY2UtbGF5ZXItZmVhdHVyZXMuY29tbWFuZCc7XG5pbXBvcnQgeyBSZW1vdmVMYXllckNvbW1hbmQgfSBmcm9tICcuLi9tZXNzYWdlcy9jb21tYW5kcy9yZW1vdmUtbGF5ZXIuY29tbWFuZCc7XG5pbXBvcnQgeyBDbGVhckxheWVyQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL2NsZWFyLWxheWVyLmNvbW1hbmQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWVzc2FnZVJlZ2lzdHJhdG9yU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHNlcnZpY2U6IE1hcFBvc3Rib3lTZXJ2aWNlKSB7XG4gICAgc2VydmljZS5yZWdpc3RlcihNYXBSZW5kZXJlZEV2ZW50LklELCBuZXcgUmVwbGF5U3ViamVjdDxNYXBSZW5kZXJlZEV2ZW50PigxKSk7XG4gICAgc2VydmljZS5yZWdpc3RlcihBZGRMYXllckNvbW1hbmQuSUQsIG5ldyBTdWJqZWN0PEFkZExheWVyQ29tbWFuZD4oKSk7XG4gICAgc2VydmljZS5yZWdpc3RlcihQbGFjZUxheWVyRmVhdHVyZXNDb21tYW5kLklELCBuZXcgUmVwbGF5U3ViamVjdDxQbGFjZUxheWVyRmVhdHVyZXNDb21tYW5kPigxKSk7XG4gICAgc2VydmljZS5yZWdpc3RlcihSZW1vdmVMYXllckNvbW1hbmQuSUQsIG5ldyBTdWJqZWN0PFJlbW92ZUxheWVyQ29tbWFuZD4oKSk7XG4gICAgc2VydmljZS5yZWdpc3RlcihDbGVhckxheWVyQ29tbWFuZC5JRCwgbmV3IFN1YmplY3Q8Q2xlYXJMYXllckNvbW1hbmQ+KCkpO1xuICB9XG59XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1yZWdpc3RyYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwcy1jb21wb25lbnRzL3NyYy9tYXAvc2VydmljZXMvbWVzc2FnZS1yZWdpc3RyYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7OztBQUc3RSxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQVksT0FBMEI7UUFDcEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsSUFBSSxhQUFhLENBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLElBQUksT0FBTyxFQUFtQixDQUFDLENBQUM7UUFDckUsT0FBTyxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxhQUFhLENBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsSUFBSSxPQUFPLEVBQXNCLENBQUMsQ0FBQztRQUMzRSxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxPQUFPLEVBQWtCLENBQUMsQ0FBQztRQUNuRSxPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLE9BQU8sRUFBcUIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7O3VIQVJVLHlCQUF5QjsySEFBekIseUJBQXlCOzRGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXBQb3N0Ym95U2VydmljZSB9IGZyb20gJy4vbWFwLXBvc3Rib3kuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYXBSZW5kZXJlZEV2ZW50IH0gZnJvbSAnLi4vbWVzc2FnZXMnO1xuaW1wb3J0IHsgQWRkTGF5ZXJDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvYWRkLWxheWVyLmNvbW1hbmQnO1xuaW1wb3J0IHsgUGxhY2VMYXllckZlYXR1cmVzQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL3BsYWNlLWxheWVyLWZlYXR1cmVzLmNvbW1hbmQnO1xuaW1wb3J0IHsgUmVtb3ZlTGF5ZXJDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvcmVtb3ZlLWxheWVyLmNvbW1hbmQnO1xuaW1wb3J0IHsgQWRkVGlsZUNvbW1hbmQgfSBmcm9tICcuLi9tZXNzYWdlcy9jb21tYW5kcy9hZGQtdGlsZS5jb21tYW5kJztcbmltcG9ydCB7IFJlbW92ZVRpbGVDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvcmVtb3ZlLXRpbGUuY29tbWFuZCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNZXNzYWdlUmVnaXN0cmF0b3JTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3Ioc2VydmljZTogTWFwUG9zdGJveVNlcnZpY2UpIHtcbiAgICBzZXJ2aWNlLnJlZ2lzdGVyKE1hcFJlbmRlcmVkRXZlbnQuSUQsIG5ldyBSZXBsYXlTdWJqZWN0PE1hcFJlbmRlcmVkRXZlbnQ+KDEpKTtcbiAgICBzZXJ2aWNlLnJlZ2lzdGVyKEFkZExheWVyQ29tbWFuZC5JRCwgbmV3IFN1YmplY3Q8QWRkTGF5ZXJDb21tYW5kPigpKTtcbiAgICBzZXJ2aWNlLnJlZ2lzdGVyKFBsYWNlTGF5ZXJGZWF0dXJlc0NvbW1hbmQuSUQsIG5ldyBSZXBsYXlTdWJqZWN0PFBsYWNlTGF5ZXJGZWF0dXJlc0NvbW1hbmQ+KDEpKTtcbiAgICBzZXJ2aWNlLnJlZ2lzdGVyKFJlbW92ZUxheWVyQ29tbWFuZC5JRCwgbmV3IFN1YmplY3Q8UmVtb3ZlTGF5ZXJDb21tYW5kPigpKTtcbiAgICBzZXJ2aWNlLnJlZ2lzdGVyKEFkZFRpbGVDb21tYW5kLklELCBuZXcgU3ViamVjdDxBZGRUaWxlQ29tbWFuZD4oKSk7XG4gICAgc2VydmljZS5yZWdpc3RlcihSZW1vdmVUaWxlQ29tbWFuZC5JRCwgbmV3IFN1YmplY3Q8UmVtb3ZlVGlsZUNvbW1hbmQ+KCkpO1xuICB9XG59XG4iXX0=
@@ -4,14 +4,14 @@ import * as i5 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { Feature } from 'ol';
6
6
  import { Point } from 'ol/geom';
7
- import { useGeographic } from 'ol/proj';
7
+ import { useGeographic, get } from 'ol/proj';
8
8
  import { Subject, ReplaySubject } from 'rxjs';
9
9
  import Map from 'ol/Map';
10
10
  import View from 'ol/View';
11
11
  import TileLayer from 'ol/layer/Tile';
12
12
  import OSM from 'ol/source/OSM';
13
13
  import { filter, first } from 'rxjs/operators';
14
- import { Vector } from 'ol/source';
14
+ import { XYZ, Vector } from 'ol/source';
15
15
  import { Vector as Vector$1 } from 'ol/layer';
16
16
  import Style from 'ol/style/Style';
17
17
  import { Icon, Circle, Fill, Stroke } from 'ol/style';
@@ -200,16 +200,27 @@ class RemoveLayerCommand extends GenericMessage {
200
200
  }
201
201
  RemoveLayerCommand.ID = 'ab484e0e-e185-45cd-8434-12101f3c7eb1';
202
202
 
203
- class ClearLayerCommand extends GenericMessage {
203
+ class AddTileCommand extends GenericMessage {
204
204
  constructor(layer) {
205
205
  super();
206
206
  this.layer = layer;
207
207
  }
208
208
  get id() {
209
- return ClearLayerCommand.ID;
209
+ return AddTileCommand.ID;
210
210
  }
211
211
  }
212
- ClearLayerCommand.ID = 'd02842b7-fa62-458d-b1e4-12dd814610c5';
212
+ AddTileCommand.ID = '25b7df28-72ce-4453-9fe6-54285a2fdc57';
213
+
214
+ class RemoveTileCommand extends GenericMessage {
215
+ constructor(layer) {
216
+ super();
217
+ this.layer = layer;
218
+ }
219
+ get id() {
220
+ return RemoveTileCommand.ID;
221
+ }
222
+ }
223
+ RemoveTileCommand.ID = 'c36ccc0b-5638-4819-b148-2de57a59a5b7';
213
224
 
214
225
  class MapPostboyService {
215
226
  constructor() {
@@ -241,7 +252,8 @@ class MessageRegistratorService {
241
252
  service.register(AddLayerCommand.ID, new Subject());
242
253
  service.register(PlaceLayerFeaturesCommand.ID, new ReplaySubject(1));
243
254
  service.register(RemoveLayerCommand.ID, new Subject());
244
- service.register(ClearLayerCommand.ID, new Subject());
255
+ service.register(AddTileCommand.ID, new Subject());
256
+ service.register(RemoveTileCommand.ID, new Subject());
245
257
  }
246
258
  }
247
259
  MessageRegistratorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MessageRegistratorService, deps: [{ token: MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -270,19 +282,28 @@ class MapManagementService {
270
282
  this.observeAddLayer();
271
283
  this.observeRemoveLayer();
272
284
  this.observePlaceFeatures();
273
- this.observeClearLayer();
285
+ this.observeAddTile();
286
+ this.observeRemoveTile();
287
+ }
288
+ observeRemoveTile() {
289
+ this.postboy.subscribe(RemoveTileCommand.ID).subscribe((c) => {
290
+ if (!this.map)
291
+ return;
292
+ this.map.removeLayer(c.layer);
293
+ });
294
+ }
295
+ observeAddTile() {
296
+ this.postboy.subscribe(AddTileCommand.ID).subscribe((c) => {
297
+ if (!this.map)
298
+ return;
299
+ this.map.addLayer(c.layer);
300
+ });
274
301
  }
275
302
  observeMapRender() {
276
303
  this.postboy.subscribe(MapRenderedEvent.ID).subscribe((m) => {
277
304
  this.map = m.map;
278
305
  });
279
306
  }
280
- observeClearLayer() {
281
- this.postboy.subscribe(ClearLayerCommand.ID).subscribe((c) => {
282
- var _a, _b;
283
- (_b = (_a = this.layers[c.layer]) === null || _a === void 0 ? void 0 : _a.getSource()) === null || _b === void 0 ? void 0 : _b.clear();
284
- });
285
- }
286
307
  observeAddLayer() {
287
308
  this.postboy.subscribe(AddLayerCommand.ID).subscribe((c) => {
288
309
  if (!this.map)
@@ -453,13 +474,130 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
453
474
  type: Input
454
475
  }] } });
455
476
 
456
- class TileLayerComponent extends DestructibleComponent {
477
+ class TileLayerSettings {
457
478
  constructor() {
479
+ this.maxZoom = 19;
480
+ this.minZoom = 0;
481
+ this.opacity = 0.6;
482
+ this.url = '';
483
+ this.projection = 'EPSG:3857';
484
+ }
485
+ static copy(model) {
486
+ const result = new TileLayerSettings();
487
+ result.maxZoom = model.maxZoom;
488
+ result.minZoom = model.minZoom;
489
+ result.projection = model.projection;
490
+ result.opacity = model.opacity;
491
+ result.url = model.url;
492
+ return result;
493
+ }
494
+ setUrl(url) {
495
+ return TileLayerSettings.copy(Object.assign(Object.assign({}, this), { url }));
496
+ }
497
+ setMaxZoom(maxZoom) {
498
+ return TileLayerSettings.copy(Object.assign(Object.assign({}, this), { maxZoom }));
499
+ }
500
+ setMinZoom(minZoom) {
501
+ return TileLayerSettings.copy(Object.assign(Object.assign({}, this), { minZoom }));
502
+ }
503
+ setOpacity(opacity) {
504
+ return TileLayerSettings.copy(Object.assign(Object.assign({}, this), { opacity }));
505
+ }
506
+ setProjection(projection) {
507
+ return TileLayerSettings.copy(Object.assign(Object.assign({}, this), { projection }));
508
+ }
509
+ isSame(model) {
510
+ if (this.maxZoom !== model.maxZoom)
511
+ return false;
512
+ if (this.minZoom !== model.minZoom)
513
+ return false;
514
+ if (this.url !== model.url)
515
+ return false;
516
+ if (this.projection !== model.projection)
517
+ return false;
518
+ if (this.opacity !== model.opacity)
519
+ return false;
520
+ return true;
521
+ }
522
+ }
523
+
524
+ class TileLayerFactory {
525
+ build(settings) {
526
+ const source = new XYZ({
527
+ tileSize: 256,
528
+ maxZoom: settings.maxZoom || 14,
529
+ minZoom: settings.minZoom || 1,
530
+ projection: get(settings.projection),
531
+ tileUrlFunction: this.getTileFunc(settings),
532
+ crossOrigin: 'Anonymous',
533
+ });
534
+ return new TileLayer({ source, opacity: settings.opacity });
535
+ }
536
+ getTileFunc(settings) {
537
+ return (tileCoord) => {
538
+ const zoom = tileCoord[0];
539
+ const x = tileCoord[1];
540
+ const y = tileCoord[2];
541
+ const normalizedCoord = this.getNormalizedCoord({ x: x, y: y }, zoom);
542
+ const bound = 1 << zoom;
543
+ return settings.url
544
+ .replace('{x}', String((normalizedCoord === null || normalizedCoord === void 0 ? void 0 : normalizedCoord.x) || x))
545
+ .replace('{z}', String(zoom))
546
+ .replace('{y}', String(bound - ((normalizedCoord === null || normalizedCoord === void 0 ? void 0 : normalizedCoord.y) || y) - 1));
547
+ };
548
+ }
549
+ getNormalizedCoord(coord, zoom) {
550
+ const y = coord.y;
551
+ let x = coord.x;
552
+ const tileRange = 1 << zoom;
553
+ if (y < 0 || y >= tileRange)
554
+ return null;
555
+ if (x < 0 || x >= tileRange)
556
+ x = ((x % tileRange) + tileRange) % tileRange;
557
+ return { x: x, y: y };
558
+ }
559
+ }
560
+ TileLayerFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TileLayerFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
561
+ TileLayerFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TileLayerFactory, providedIn: 'root' });
562
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TileLayerFactory, decorators: [{
563
+ type: Injectable,
564
+ args: [{
565
+ providedIn: 'root',
566
+ }]
567
+ }] });
568
+
569
+ class TileLayerComponent extends DestructibleComponent {
570
+ constructor(postboy, factory) {
458
571
  super();
572
+ this.postboy = postboy;
573
+ this.factory = factory;
574
+ this._settings = new TileLayerSettings();
575
+ this.onDestroy = () => this.removeLayer();
576
+ }
577
+ ngOnInit() {
578
+ this.postboy
579
+ .subscribe(MapRenderedEvent.ID)
580
+ .pipe(filter((m) => !!m), first())
581
+ .subscribe((m) => this.initLayer());
582
+ }
583
+ set settings(value) {
584
+ if (!value || this._settings.isSame(value))
585
+ return;
586
+ this._settings = value;
587
+ this.initLayer();
588
+ }
589
+ initLayer() {
590
+ this.removeLayer();
591
+ this.layer = this.factory.build(this._settings);
592
+ this.postboy.fire(new AddTileCommand(this.layer));
593
+ }
594
+ removeLayer() {
595
+ if (this.layer)
596
+ this.postboy.fire(new RemoveTileCommand(this.layer));
459
597
  }
460
598
  }
461
- TileLayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TileLayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
462
- TileLayerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TileLayerComponent, selector: "lib-tile-layer", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
599
+ TileLayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TileLayerComponent, deps: [{ token: MapPostboyService }, { token: TileLayerFactory }], target: i0.ɵɵFactoryTarget.Component });
600
+ TileLayerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TileLayerComponent, selector: "lib-tile-layer", inputs: { settings: "settings" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
463
601
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TileLayerComponent, decorators: [{
464
602
  type: Component,
465
603
  args: [{
@@ -468,7 +606,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
468
606
  styleUrls: [],
469
607
  changeDetection: ChangeDetectionStrategy.OnPush,
470
608
  }]
471
- }], ctorParameters: function () { return []; } });
609
+ }], ctorParameters: function () { return [{ type: MapPostboyService }, { type: TileLayerFactory }]; }, propDecorators: { settings: [{
610
+ type: Input
611
+ }] } });
472
612
 
473
613
  class FeatureLayerSettings {
474
614
  constructor() {
@@ -633,7 +773,7 @@ MapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.
633
773
  TileLayerComponent,
634
774
  OsmTileLayerComponent,
635
775
  FeatureLayerComponent,
636
- MarkersComponent], imports: [CommonModule], exports: [MapPlateComponent, FeatureLayerComponent, MarkersComponent] });
776
+ MarkersComponent], imports: [CommonModule], exports: [MapPlateComponent, FeatureLayerComponent, MarkersComponent, TileLayerComponent] });
637
777
  MapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapModule, imports: [[CommonModule]] });
638
778
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapModule, decorators: [{
639
779
  type: NgModule,
@@ -647,51 +787,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
647
787
  FeatureLayerComponent,
648
788
  MarkersComponent,
649
789
  ],
650
- exports: [MapPlateComponent, FeatureLayerComponent, MarkersComponent],
790
+ exports: [MapPlateComponent, FeatureLayerComponent, MarkersComponent, TileLayerComponent],
651
791
  }]
652
792
  }] });
653
793
 
654
- class TileLayerSettings {
655
- constructor() {
656
- this.name = 'tiles';
657
- this.maxZoom = 19;
658
- this.minZoom = 0;
659
- this.opacity = 1;
660
- this.url = '';
661
- }
662
- static copy(model) {
663
- const result = new TileLayerSettings();
664
- result.name = model.name;
665
- result.maxZoom = model.maxZoom;
666
- result.minZoom = model.minZoom;
667
- result.url = model.url;
668
- return result;
669
- }
670
- setUrl(url) {
671
- return TileLayerSettings.copy(Object.assign(Object.assign({}, this), { url }));
672
- }
673
- setName(name) {
674
- return TileLayerSettings.copy(Object.assign(Object.assign({}, this), { name }));
675
- }
676
- setMaxZoom(maxZoom) {
677
- return TileLayerSettings.copy(Object.assign(Object.assign({}, this), { maxZoom }));
678
- }
679
- setMinZoom(minZoom) {
680
- return TileLayerSettings.copy(Object.assign(Object.assign({}, this), { minZoom }));
681
- }
682
- isSame(model) {
683
- if (this.maxZoom !== model.maxZoom)
684
- return false;
685
- if (this.minZoom !== model.minZoom)
686
- return false;
687
- if (this.url !== model.url)
688
- return false;
689
- if (this.name !== model.name)
690
- return false;
691
- return true;
692
- }
693
- }
694
-
695
794
  class MarkerStyleHelper {
696
795
  static fromSvg(svg, size = [30, 30], zIndex = 400) {
697
796
  let image = new Image();