@artstesh/maps 4.1.8 → 4.1.10

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 (127) hide show
  1. package/dist/esm2020/map/helpers/marker-style.helper.mjs +27 -1
  2. package/dist/esm2020/map/helpers/polygon-style.helper.mjs +22 -1
  3. package/dist/esm2020/map/helpers/stringify-feature.helper.mjs +24 -21
  4. package/dist/esm2020/map/helpers/text-style.helper.mjs +12 -1
  5. package/dist/esm2020/map/map-plate/controls/map-control-zoom/map-control-zoom.component.mjs +24 -7
  6. package/dist/esm2020/map/map-plate/controls/map-control-zoom/zoom-control.settings.mjs +72 -1
  7. package/dist/esm2020/map/map-plate/features/markers/markers.component.mjs +11 -1
  8. package/dist/esm2020/map/map-plate/features/polygons/polygons.component.mjs +11 -1
  9. package/dist/esm2020/map/map-plate/layers/cluster-layer/cluster-layer.component.mjs +15 -7
  10. package/dist/esm2020/map/map-plate/layers/cluster-layer/cluster-layer.settings.mjs +79 -1
  11. package/dist/esm2020/map/map-plate/layers/feature-layer/feature-layer.component.mjs +7 -7
  12. package/dist/esm2020/map/map-plate/layers/feature-layer/feature-layer.settings.mjs +37 -17
  13. package/dist/esm2020/map/map-plate/layers/tile-layer/tile-layer.component.mjs +7 -7
  14. package/dist/esm2020/map/map-plate/layers/tile-layer/tile-layer.settings.mjs +76 -1
  15. package/dist/esm2020/map/map-plate/map-plate.component.mjs +2 -2
  16. package/dist/esm2020/map/map-plate/tooltips/tooltip/tooltip.component.mjs +19 -19
  17. package/dist/esm2020/map/map-plate/tooltips/tooltip/tooltip.settings.mjs +1 -1
  18. package/dist/esm2020/map/messages/commands/fit-to-polygons.command.mjs +1 -1
  19. package/dist/esm2020/map/messages/events/map-move-end.event.mjs +3 -4
  20. package/dist/esm2020/map/messages/executors/get-map-position.executor.mjs +16 -0
  21. package/dist/esm2020/map/messages/index.mjs +2 -1
  22. package/dist/esm2020/map/models/index.mjs +2 -1
  23. package/dist/esm2020/map/models/map-control.mjs +2 -2
  24. package/dist/esm2020/map/models/map-position.model.mjs +2 -0
  25. package/dist/esm2020/map/models/marker-model.mjs +1 -1
  26. package/dist/esm2020/map/models/polygon.model.mjs +11 -11
  27. package/dist/esm2020/map/services/feature.service.mjs +6 -6
  28. package/dist/esm2020/map/services/map-click.service.mjs +9 -9
  29. package/dist/esm2020/map/services/map-feature.service.mjs +1 -1
  30. package/dist/esm2020/map/services/map-state.service.mjs +11 -6
  31. package/dist/esm2020/map/services/message-registrator.service.mjs +4 -1
  32. package/dist/esm2020/src/map/helpers/marker-style.helper.mjs +27 -1
  33. package/dist/esm2020/src/map/helpers/polygon-style.helper.mjs +22 -1
  34. package/dist/esm2020/src/map/helpers/stringify-feature.helper.mjs +24 -21
  35. package/dist/esm2020/src/map/helpers/text-style.helper.mjs +12 -1
  36. package/dist/esm2020/src/map/map-plate/controls/map-control-zoom/map-control-zoom.component.mjs +24 -7
  37. package/dist/esm2020/src/map/map-plate/controls/map-control-zoom/zoom-control.settings.mjs +72 -1
  38. package/dist/esm2020/src/map/map-plate/features/markers/markers.component.mjs +11 -1
  39. package/dist/esm2020/src/map/map-plate/features/polygons/polygons.component.mjs +11 -1
  40. package/dist/esm2020/src/map/map-plate/layers/cluster-layer/cluster-layer.component.mjs +15 -7
  41. package/dist/esm2020/src/map/map-plate/layers/cluster-layer/cluster-layer.settings.mjs +79 -1
  42. package/dist/esm2020/src/map/map-plate/layers/feature-layer/feature-layer.component.mjs +7 -7
  43. package/dist/esm2020/src/map/map-plate/layers/feature-layer/feature-layer.settings.mjs +37 -17
  44. package/dist/esm2020/src/map/map-plate/layers/tile-layer/tile-layer.component.mjs +7 -7
  45. package/dist/esm2020/src/map/map-plate/layers/tile-layer/tile-layer.settings.mjs +76 -1
  46. package/dist/esm2020/src/map/map-plate/map-plate.component.mjs +2 -2
  47. package/dist/esm2020/src/map/map-plate/tooltips/tooltip/tooltip.component.mjs +19 -19
  48. package/dist/esm2020/src/map/map-plate/tooltips/tooltip/tooltip.settings.mjs +1 -1
  49. package/dist/esm2020/src/map/messages/commands/fit-to-polygons.command.mjs +1 -1
  50. package/dist/esm2020/src/map/messages/events/map-move-end.event.mjs +3 -4
  51. package/dist/esm2020/src/map/messages/executors/get-map-position.executor.mjs +16 -0
  52. package/dist/esm2020/src/map/messages/index.mjs +2 -1
  53. package/dist/esm2020/src/map/models/index.mjs +2 -1
  54. package/dist/esm2020/src/map/models/map-control.mjs +2 -2
  55. package/dist/esm2020/src/map/models/map-position.model.mjs +2 -0
  56. package/dist/esm2020/src/map/models/marker-model.mjs +1 -1
  57. package/dist/esm2020/src/map/models/polygon.model.mjs +11 -11
  58. package/dist/esm2020/src/map/services/feature.service.mjs +6 -6
  59. package/dist/esm2020/src/map/services/map-click.service.mjs +9 -9
  60. package/dist/esm2020/src/map/services/map-feature.service.mjs +1 -1
  61. package/dist/esm2020/src/map/services/map-state.service.mjs +11 -6
  62. package/dist/esm2020/src/map/services/message-registrator.service.mjs +4 -1
  63. package/dist/fesm2015/maps-components-src-map.mjs +486 -114
  64. package/dist/fesm2015/maps-components-src-map.mjs.map +1 -1
  65. package/dist/fesm2015/maps-components.mjs +486 -114
  66. package/dist/fesm2015/maps-components.mjs.map +1 -1
  67. package/dist/fesm2020/maps-components-src-map.mjs +483 -110
  68. package/dist/fesm2020/maps-components-src-map.mjs.map +1 -1
  69. package/dist/fesm2020/maps-components.mjs +483 -110
  70. package/dist/fesm2020/maps-components.mjs.map +1 -1
  71. package/dist/map/helpers/marker-style.helper.d.ts +26 -0
  72. package/dist/map/helpers/polygon-style.helper.d.ts +21 -0
  73. package/dist/map/helpers/stringify-feature.helper.d.ts +18 -0
  74. package/dist/map/helpers/text-style.helper.d.ts +11 -0
  75. package/dist/map/map-plate/controls/map-control-zoom/map-control-zoom.component.d.ts +20 -3
  76. package/dist/map/map-plate/controls/map-control-zoom/zoom-control.settings.d.ts +71 -0
  77. package/dist/map/map-plate/features/markers/markers.component.d.ts +10 -0
  78. package/dist/map/map-plate/features/polygons/polygons.component.d.ts +10 -0
  79. package/dist/map/map-plate/layers/cluster-layer/cluster-layer.component.d.ts +10 -2
  80. package/dist/map/map-plate/layers/cluster-layer/cluster-layer.settings.d.ts +78 -0
  81. package/dist/map/map-plate/layers/feature-layer/feature-layer.component.d.ts +2 -2
  82. package/dist/map/map-plate/layers/feature-layer/feature-layer.settings.d.ts +36 -16
  83. package/dist/map/map-plate/layers/tile-layer/tile-layer.component.d.ts +1 -1
  84. package/dist/map/map-plate/layers/tile-layer/tile-layer.settings.d.ts +75 -0
  85. package/dist/map/map-plate/map-plate.component.d.ts +2 -2
  86. package/dist/map/map-plate/tooltips/tooltip/tooltip.component.d.ts +5 -5
  87. package/dist/map/map-plate/tooltips/tooltip/tooltip.settings.d.ts +1 -1
  88. package/dist/map/messages/events/map-move-end.event.d.ts +3 -3
  89. package/dist/map/messages/executors/get-map-position.executor.d.ts +12 -0
  90. package/dist/map/messages/index.d.ts +1 -0
  91. package/dist/map/models/index.d.ts +1 -0
  92. package/dist/map/models/map-control.d.ts +1 -1
  93. package/dist/map/models/map-position.model.d.ts +6 -0
  94. package/dist/map/models/polygon.model.d.ts +2 -2
  95. package/dist/map/services/feature.service.d.ts +1 -1
  96. package/dist/map/services/map-click.service.d.ts +1 -1
  97. package/dist/map/services/map-state.service.d.ts +2 -0
  98. package/dist/map/services/message-registrator.service.d.ts +1 -0
  99. package/dist/src/map/helpers/marker-style.helper.d.ts +26 -0
  100. package/dist/src/map/helpers/polygon-style.helper.d.ts +21 -0
  101. package/dist/src/map/helpers/stringify-feature.helper.d.ts +18 -0
  102. package/dist/src/map/helpers/text-style.helper.d.ts +11 -0
  103. package/dist/src/map/map-plate/controls/map-control-zoom/map-control-zoom.component.d.ts +20 -3
  104. package/dist/src/map/map-plate/controls/map-control-zoom/zoom-control.settings.d.ts +71 -0
  105. package/dist/src/map/map-plate/features/markers/markers.component.d.ts +10 -0
  106. package/dist/src/map/map-plate/features/polygons/polygons.component.d.ts +10 -0
  107. package/dist/src/map/map-plate/layers/cluster-layer/cluster-layer.component.d.ts +10 -2
  108. package/dist/src/map/map-plate/layers/cluster-layer/cluster-layer.settings.d.ts +78 -0
  109. package/dist/src/map/map-plate/layers/feature-layer/feature-layer.component.d.ts +2 -2
  110. package/dist/src/map/map-plate/layers/feature-layer/feature-layer.settings.d.ts +36 -16
  111. package/dist/src/map/map-plate/layers/tile-layer/tile-layer.component.d.ts +1 -1
  112. package/dist/src/map/map-plate/layers/tile-layer/tile-layer.settings.d.ts +75 -0
  113. package/dist/src/map/map-plate/map-plate.component.d.ts +2 -2
  114. package/dist/src/map/map-plate/tooltips/tooltip/tooltip.component.d.ts +5 -5
  115. package/dist/src/map/map-plate/tooltips/tooltip/tooltip.settings.d.ts +1 -1
  116. package/dist/src/map/messages/events/map-move-end.event.d.ts +3 -3
  117. package/dist/src/map/messages/executors/get-map-position.executor.d.ts +12 -0
  118. package/dist/src/map/messages/index.d.ts +1 -0
  119. package/dist/src/map/models/index.d.ts +1 -0
  120. package/dist/src/map/models/map-control.d.ts +1 -1
  121. package/dist/src/map/models/map-position.model.d.ts +6 -0
  122. package/dist/src/map/models/polygon.model.d.ts +2 -2
  123. package/dist/src/map/services/feature.service.d.ts +1 -1
  124. package/dist/src/map/services/map-click.service.d.ts +1 -1
  125. package/dist/src/map/services/map-state.service.d.ts +2 -0
  126. package/dist/src/map/services/message-registrator.service.d.ts +1 -0
  127. package/package.json +1 -1
@@ -3,7 +3,7 @@ import { Component, Injectable, ChangeDetectionStrategy, Input, ViewChild, NgMod
3
3
  import * as i4 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { Feature, Collection } from 'ol';
6
- import { Point, LineString } from 'ol/geom';
6
+ import { Point } from 'ol/geom';
7
7
  import { GeoJSON, WKT } from 'ol/format';
8
8
  import { getCenter, createEmpty, extend } from 'ol/extent';
9
9
  import { Control, Zoom } from 'ol/control';
@@ -157,16 +157,6 @@ class MarkerModel {
157
157
  }
158
158
 
159
159
  class PolygonModel {
160
- static fromGeoJson(id, json, info) {
161
- let feature = new GeoJSON().readFeature(json);
162
- feature.setId(id);
163
- return new PolygonModel(feature, id, info);
164
- }
165
- static fromWKT(id, wkt, info) {
166
- let feature = new WKT().readFeature(wkt);
167
- feature.setId(id);
168
- return new PolygonModel(feature, id, info);
169
- }
170
160
  constructor(feature, id, info) {
171
161
  this.info = info;
172
162
  this.id = id == null ? IdGenerator.get() : id;
@@ -178,6 +168,16 @@ class PolygonModel {
178
168
  get feature() {
179
169
  return this._feature;
180
170
  }
171
+ static fromGeoJson(id, json, info) {
172
+ let feature = new GeoJSON().readFeature(json);
173
+ feature.setId(id);
174
+ return new PolygonModel(feature, id, info);
175
+ }
176
+ static fromWKT(id, wkt, info) {
177
+ let feature = new WKT().readFeature(wkt);
178
+ feature.setId(id);
179
+ return new PolygonModel(feature, id, info);
180
+ }
181
181
  }
182
182
 
183
183
  var DrawingType;
@@ -196,7 +196,7 @@ var FeatureOutputFormat;
196
196
 
197
197
  /**
198
198
  *
199
- * A control is a visible widget with a DOM element in a fixed position on the screen. They can involve user input (buttons), or be informational only; the position is determined using CSS. By default these are placed in the container with CSS class name ol-overlaycontainer-stopevent, but can use any outside DOM element.
199
+ * A control is a visible widget with a DOM element in a fixed position on the screen. They can involve user input (buttons), or be informational only; the position is determined using CSS. By default, these are placed in the container with CSS class name ol-overlaycontainer-stopevent, but can use any outside DOM element.
200
200
  * This is the base class for controls. You can use it for simple custom controls by creating the element with listeners, creating an instance:
201
201
  * var myControl = new Control({element: myElement}); and then adding this to the map.
202
202
  * The main advantage of having this as a control rather than a simple separate DOM element is that preventing propagation is handled for you. Controls will also be objects in a module:ol/Collection~Collection, so you can use their methods.
@@ -233,10 +233,9 @@ class MapClickEvent extends PostboyGenericMessage {
233
233
  MapClickEvent.ID = '323df526-8d9c-49c6-83e8-6e9a1e7762f7';
234
234
 
235
235
  class MapMoveEndEvent extends PostboyGenericMessage {
236
- constructor(zoom, extent) {
236
+ constructor(position) {
237
237
  super();
238
- this.zoom = zoom;
239
- this.extent = extent;
238
+ this.position = position;
240
239
  }
241
240
  get id() {
242
241
  return MapMoveEndEvent.ID;
@@ -375,6 +374,21 @@ class FitToPolygonsCommand extends PostboyGenericMessage {
375
374
  }
376
375
  FitToPolygonsCommand.ID = 'a9e42b23-ffaf-4c46-8370-e0432cd14d60';
377
376
 
377
+ /**
378
+ * A message that allows to get the current state of the map.
379
+ * If the map's state is not defined yet, the executor would return null
380
+ * @returns {MapPosition | null}
381
+ */
382
+ class GetMapPositionExecutor extends PostboyExecutor {
383
+ get id() {
384
+ return GetMapPositionExecutor.ID;
385
+ }
386
+ constructor() {
387
+ super();
388
+ }
389
+ }
390
+ GetMapPositionExecutor.ID = '52c95689-d09b-4082-ba58-9183ea96a213';
391
+
378
392
  class AddLayerCommand extends PostboyGenericMessage {
379
393
  constructor(layer) {
380
394
  super();
@@ -491,6 +505,11 @@ class FeatureService {
491
505
  static filterFeaturesInArea(query) {
492
506
  return query.features.filter((f) => FeatureService.booleanIntersects(query.area, f.getGeometry()));
493
507
  }
508
+ static calculateArea(g) {
509
+ if (!g)
510
+ return 0;
511
+ return Sphere.getArea(g, { projection: 'EPSG:4326' });
512
+ }
494
513
  static booleanIntersects(g1, g2) {
495
514
  if (g2.getType() === 'Point')
496
515
  return g1.intersectsCoordinate(g2.getCoordinates());
@@ -500,11 +519,6 @@ class FeatureService {
500
519
  return g1.intersectsCoordinate(g2.getInteriorPoint().getCoordinates());
501
520
  return false;
502
521
  }
503
- static calculateArea(g) {
504
- if (!g)
505
- return 0;
506
- return Sphere.getArea(g, { projection: 'EPSG:4326' });
507
- }
508
522
  }
509
523
 
510
524
  class GetFeaturesInAreaQuery extends PostboyCallbackMessage {
@@ -674,6 +688,14 @@ class MapStateService {
674
688
  this.observeMapRendering();
675
689
  this.observeCenter();
676
690
  }
691
+ getMapPosition() {
692
+ if (!this.map)
693
+ return null;
694
+ let [longitude, latitude] = this.map.getView().getCenter();
695
+ const zoom = Math.floor(this.map.getView().getZoom());
696
+ const extent = this.map.getView().calculateExtent();
697
+ return { longitude, latitude, zoom, extent };
698
+ }
677
699
  observeMapRendering() {
678
700
  this.postboy
679
701
  .subscribe(MapRenderedEvent.ID)
@@ -681,9 +703,7 @@ class MapStateService {
681
703
  .subscribe((ev) => {
682
704
  this.map = ev.map;
683
705
  this.map?.on('moveend', () => {
684
- const zoom = Math.floor(this.map?.getView().getZoom() || -1);
685
- const extent = this.map?.getView().calculateExtent() || [];
686
- this.postboy.fire(new MapMoveEndEvent(zoom, extent));
706
+ this.postboy.fire(new MapMoveEndEvent(this.getMapPosition()));
687
707
  });
688
708
  });
689
709
  }
@@ -754,14 +774,6 @@ class MapClickService {
754
774
  up() {
755
775
  this.observeMapRender();
756
776
  }
757
- observeMapRender() {
758
- this.postboy.subscribe(MapRenderedEvent.ID).subscribe((m) => {
759
- this.map = m.map;
760
- this.map?.on('singleclick', (e) => {
761
- this.postboy.fire(this.onClick(e));
762
- });
763
- });
764
- }
765
777
  onClick(ev) {
766
778
  const model = new MapClickEvent(ev.coordinate, {}, {});
767
779
  this.map?.forEachFeatureAtPixel(ev.pixel, (f, l) => {
@@ -779,6 +791,14 @@ class MapClickService {
779
791
  });
780
792
  return model;
781
793
  }
794
+ observeMapRender() {
795
+ this.postboy.subscribe(MapRenderedEvent.ID).subscribe((m) => {
796
+ this.map = m.map;
797
+ this.map?.on('singleclick', (e) => {
798
+ this.postboy.fire(this.onClick(e));
799
+ });
800
+ });
801
+ }
782
802
  getFeatureCollectionWithInner(features) {
783
803
  const result = [];
784
804
  features?.forEach((f) => {
@@ -996,6 +1016,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
996
1016
  class MessageRegistratorService extends PostboyAbstractRegistrator {
997
1017
  constructor(service, management, state, mapFeature, interaction, drawing, featureModification, controls) {
998
1018
  super(service);
1019
+ this.state = state;
999
1020
  this.registerServices([management, state, interaction, mapFeature, drawing, featureModification, controls]);
1000
1021
  }
1001
1022
  _up() {
@@ -1028,6 +1049,7 @@ class MessageRegistratorService extends PostboyAbstractRegistrator {
1028
1049
  this.registerExecutor(CalculateAreaExecutor.ID, (e) => FeatureService.calculateArea(e.polygon?.feature?.getGeometry()));
1029
1050
  this.registerExecutor(GenerateDrawExecutor.ID, (e) => DrawingGenerationService.getDraw(e));
1030
1051
  this.registerExecutor(GenerateZoomControlExecutor.ID, (e) => ZoomControlFactory.build(e.settings));
1052
+ this.registerExecutor(GetMapPositionExecutor.ID, () => this.state.getMapPosition());
1031
1053
  }
1032
1054
  }
1033
1055
  MessageRegistratorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MessageRegistratorService, deps: [{ token: MapPostboyService }, { token: MapManagementService }, { token: MapStateService }, { token: MapFeatureService }, { token: MapClickService }, { token: DrawingService }, { token: FeatureModificationService }, { token: ControlsService }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -1036,14 +1058,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1036
1058
  type: Injectable
1037
1059
  }], ctorParameters: function () { return [{ type: MapPostboyService }, { type: MapManagementService }, { type: MapStateService }, { type: MapFeatureService }, { type: MapClickService }, { type: DrawingService }, { type: FeatureModificationService }, { type: ControlsService }]; } });
1038
1060
 
1061
+ /**
1062
+ * Class representing settings for a tile layer.
1063
+ */
1039
1064
  class TileLayerSettings {
1040
1065
  constructor() {
1066
+ /**
1067
+ * The maximum zoom level for a map view.
1068
+ *
1069
+ * @type {number}
1070
+ * @default 19
1071
+ */
1041
1072
  this.maxZoom = 19;
1073
+ /**
1074
+ * The minimum zoom level allowed.
1075
+ *
1076
+ * @type {number}
1077
+ */
1042
1078
  this.minZoom = 0;
1079
+ /**
1080
+ * The opacity of an element.
1081
+ *
1082
+ * @type {number}
1083
+ * @default 0.6
1084
+ */
1043
1085
  this.opacity = 0.6;
1086
+ /**
1087
+ * Represents the tiles URL.
1088
+ * @typedef {string} url
1089
+ *
1090
+ * @example
1091
+ * 'https://example.ex/{z}/{x}/{y}.png'
1092
+ */
1044
1093
  this.url = '';
1094
+ /**
1095
+ * The projection of the coordinate system.
1096
+ *
1097
+ * @type {string}
1098
+ * @default 'EPSG:3857'
1099
+ */
1045
1100
  this.projection = 'EPSG:3857';
1046
1101
  }
1102
+ /**
1103
+ * Creates a copy of the given tile layer settings.
1104
+ *
1105
+ * @param {TileLayerSettings} model - The tile layer settings to be copied.
1106
+ * @return {TileLayerSettings} - A new instance of TileLayerSettings with the same properties as the model.
1107
+ */
1047
1108
  static copy(model) {
1048
1109
  const result = new TileLayerSettings();
1049
1110
  result.maxZoom = model.maxZoom;
@@ -1053,21 +1114,57 @@ class TileLayerSettings {
1053
1114
  result.url = model.url;
1054
1115
  return result;
1055
1116
  }
1117
+ /**
1118
+ * Sets the URL of the TileLayerSettings object.
1119
+ *
1120
+ * @param {string} url - The URL to be set.
1121
+ * @return {TileLayerSettings} - The updated TileLayerSettings object.
1122
+ */
1056
1123
  setUrl(url) {
1057
1124
  return TileLayerSettings.copy({ ...this, url });
1058
1125
  }
1126
+ /**
1127
+ * Sets the maximum zoom level for the tile layer.
1128
+ *
1129
+ * @param {number} maxZoom - The maximum zoom level.
1130
+ * @returns {TileLayerSettings} - The updated tile layer settings object.
1131
+ */
1059
1132
  setMaxZoom(maxZoom) {
1060
1133
  return TileLayerSettings.copy({ ...this, maxZoom });
1061
1134
  }
1135
+ /**
1136
+ * Sets the minimum zoom level for the Tile Layer.
1137
+ *
1138
+ * @param {number} minZoom - The minimum zoom level to be set.
1139
+ * @return {TileLayerSettings} The modified TileLayerSettings object with the updated minimum zoom level.
1140
+ */
1062
1141
  setMinZoom(minZoom) {
1063
1142
  return TileLayerSettings.copy({ ...this, minZoom });
1064
1143
  }
1144
+ /**
1145
+ * Sets the opacity of the TileLayerSettings.
1146
+ *
1147
+ * @param {number} opacity - The opacity value to set. Must be a number between 0 and 1.
1148
+ * @return {TileLayerSettings} - A new instance of TileLayerSettings with the opacity set.
1149
+ */
1065
1150
  setOpacity(opacity) {
1066
1151
  return TileLayerSettings.copy({ ...this, opacity });
1067
1152
  }
1153
+ /**
1154
+ * Sets the projection for the tile layer settings.
1155
+ *
1156
+ * @param {string} projection - The desired projection for the tile layer settings.
1157
+ * @return {TileLayerSettings} - The updated tile layer settings with the new projection.
1158
+ */
1068
1159
  setProjection(projection) {
1069
1160
  return TileLayerSettings.copy({ ...this, projection });
1070
1161
  }
1162
+ /**
1163
+ * Checks if the current instance of TileLayerSettings is equal to the given model.
1164
+ * @param {TileLayerSettings} model - The model to compare against.
1165
+ * @return {boolean} - True if all properties of the current instance matches the properties of the model;
1166
+ * otherwise, false.
1167
+ */
1071
1168
  isSame(model) {
1072
1169
  if (this.maxZoom !== model.maxZoom)
1073
1170
  return false;
@@ -1136,18 +1233,18 @@ class TileLayerComponent extends DestructibleComponent {
1136
1233
  this._settings = new TileLayerSettings();
1137
1234
  this.onDestroy = () => this.removeLayer();
1138
1235
  }
1139
- ngOnInit() {
1140
- this.postboy
1141
- .subscribe(MapRenderedEvent.ID)
1142
- .pipe(filter((m) => !!m), first())
1143
- .subscribe((m) => this.initLayer());
1144
- }
1145
1236
  set settings(value) {
1146
1237
  if (!value || this._settings.isSame(value))
1147
1238
  return;
1148
1239
  this._settings = value;
1149
1240
  this.initLayer();
1150
1241
  }
1242
+ ngOnInit() {
1243
+ this.postboy
1244
+ .subscribe(MapRenderedEvent.ID)
1245
+ .pipe(filter((m) => !!m), first())
1246
+ .subscribe((m) => this.initLayer());
1247
+ }
1151
1248
  initLayer() {
1152
1249
  this.removeLayer();
1153
1250
  this.layer = this.factory.build(this._settings);
@@ -1231,17 +1328,24 @@ class FeatureLayerSettings {
1231
1328
  */
1232
1329
  this.zIndex = 1;
1233
1330
  /**
1234
- * The maximum zoom at which the layer is visible. 19 by default
1331
+ The maximum view zoom level (inclusive) at which this layer will be visible.
1332
+
1333
+ @type {number}
1334
+ @default 19
1235
1335
  */
1236
1336
  this.maxZoom = 19;
1237
1337
  /**
1238
- * The minimum zoom at which the layer is visible. 0 by default
1338
+ The minimum view zoom level (exclusive) at which this layer will be visible.
1339
+
1340
+ @type {number}
1239
1341
  */
1240
1342
  this.minZoom = 0;
1241
1343
  }
1242
1344
  /**
1243
- * Creates a clone of the existing settings
1244
- * @param model
1345
+ * Copies the given FeatureLayerSettings object
1346
+ *
1347
+ * @param {FeatureLayerSettings} model - The FeatureLayerSettings object to be copied
1348
+ * @returns {FeatureLayerSettings} - A copy of the FeatureLayerSettings object
1245
1349
  */
1246
1350
  static copy(model) {
1247
1351
  const result = new FeatureLayerSettings();
@@ -1253,43 +1357,56 @@ class FeatureLayerSettings {
1253
1357
  return result;
1254
1358
  }
1255
1359
  /**
1256
- Setter for {@link FeatureLayerSettings.zIndex}
1257
- * @param zIndex
1360
+ * Sets the z-index value for the FeatureLayerSettings object.
1361
+ *
1362
+ * @param {number} zIndex - The new z-index value.
1363
+ * @return {FeatureLayerSettings} - The updated FeatureLayerSettings object.
1258
1364
  */
1259
1365
  setZIndex(zIndex) {
1260
1366
  return FeatureLayerSettings.copy({ ...this, zIndex });
1261
1367
  }
1262
1368
  /**
1263
- * Setter for {@link FeatureLayerSettings.name}
1264
- * @param name
1369
+ * Sets the name of the FeatureLayerSettings.
1370
+ *
1371
+ * @param {string} name - The name to set for the FeatureLayerSettings.
1372
+ *
1373
+ * @return {FeatureLayerSettings} - The updated FeatureLayerSettings object with the new name.
1265
1374
  */
1266
1375
  setName(name) {
1267
1376
  return FeatureLayerSettings.copy({ ...this, name });
1268
1377
  }
1269
1378
  /**
1270
- * Setter for {@link FeatureLayerSettings.maxZoom}
1271
- * @param maxZoom
1379
+ * Sets the maximum zoom level for the FeatureLayerSettings.
1380
+ *
1381
+ * @param {number} maxZoom - The maximum zoom level.
1382
+ * @return {FeatureLayerSettings} - The updated FeatureLayerSettings object.
1272
1383
  */
1273
1384
  setMaxZoom(maxZoom) {
1274
1385
  return FeatureLayerSettings.copy({ ...this, maxZoom });
1275
1386
  }
1276
1387
  /**
1277
- * Setter for {@link FeatureLayerSettings.minZoom}
1278
- * @param minZoom
1388
+ * Sets the minimum zoom level for the feature layer.
1389
+ *
1390
+ * @param {number} minZoom The minimum zoom level to be set.
1391
+ * @returns {FeatureLayerSettings} The updated feature layer settings object.
1279
1392
  */
1280
1393
  setMinZoom(minZoom) {
1281
1394
  return FeatureLayerSettings.copy({ ...this, minZoom });
1282
1395
  }
1283
1396
  /**
1284
- * Setter for {@link FeatureLayerSettings.style}
1285
- * @param style
1397
+ * Sets the style for the FeatureLayerSettings object.
1398
+ *
1399
+ * @param {Style | StyleFunction} style - The new style to set. It can be either a Style object or a StyleFunction.
1400
+ * @return {FeatureLayerSettings} - The updated FeatureLayerSettings object with the new style.
1286
1401
  */
1287
1402
  setStyle(style) {
1288
1403
  return FeatureLayerSettings.copy({ ...this, style });
1289
1404
  }
1290
1405
  /**
1291
- * Checks if the model has the same content
1292
- * @param model - the object to compare
1406
+ * Checks if the given FeatureLayerSettings object is identical to the current object.
1407
+ *
1408
+ * @param {FeatureLayerSettings} model - The FeatureLayerSettings object to compare with.
1409
+ * @return {boolean} - Returns true if the given object is identical to the current object, otherwise false.
1293
1410
  */
1294
1411
  isSame(model) {
1295
1412
  if (this.maxZoom !== model.maxZoom)
@@ -1339,18 +1456,18 @@ class FeatureLayerComponent extends DestructibleComponent {
1339
1456
  this._settings = new FeatureLayerSettings();
1340
1457
  this.onDestroy = () => this.removeLayer();
1341
1458
  }
1342
- ngOnInit() {
1343
- this.postboy
1344
- .subscribe(MapRenderedEvent.ID)
1345
- .pipe(filter((m) => !!m), first())
1346
- .subscribe((m) => this.initLayer());
1347
- }
1348
1459
  set settings(value) {
1349
1460
  if (!value || this._settings.isSame(value))
1350
1461
  return;
1351
1462
  this._settings = value;
1352
1463
  this.initLayer();
1353
1464
  }
1465
+ ngOnInit() {
1466
+ this.postboy
1467
+ .subscribe(MapRenderedEvent.ID)
1468
+ .pipe(filter((m) => !!m), first())
1469
+ .subscribe((m) => this.initLayer());
1470
+ }
1354
1471
  initLayer() {
1355
1472
  this.removeLayer();
1356
1473
  this.layer = this.factory.build(this._settings);
@@ -1374,12 +1491,34 @@ class ClusterLayerSettings {
1374
1491
  constructor() {
1375
1492
  this.name = IdGenerator.get();
1376
1493
  this.zIndex = 1;
1494
+ /**
1495
+ * The maximum view zoom level (inclusive) at which this layer will be visible.
1496
+ *
1497
+ * @type {number}
1498
+ * @default 19
1499
+ */
1377
1500
  this.maxZoom = 19;
1501
+ /**
1502
+ * The minimum view zoom level (exclusive) at which this layer will be visible.
1503
+ *
1504
+ * @type {number}
1505
+ */
1378
1506
  this.minZoom = 0;
1507
+ /**
1508
+ * Distance in pixels within which features will be clustered together.
1509
+ *
1510
+ * @type {number}
1511
+ */
1379
1512
  this.distance = 20;
1380
1513
  this.bbox = false;
1381
1514
  this.clusterCancel = 14;
1382
1515
  }
1516
+ /**
1517
+ * Creates a copy of the given ClusterLayerSettings object.
1518
+ *
1519
+ * @param {ClusterLayerSettings} model - The ClusterLayerSettings object to be copied.
1520
+ * @returns {ClusterLayerSettings} - A new ClusterLayerSettings object that is a copy of the original object.
1521
+ */
1383
1522
  static copy(model) {
1384
1523
  const result = new ClusterLayerSettings();
1385
1524
  result.name = model.name;
@@ -1392,30 +1531,86 @@ class ClusterLayerSettings {
1392
1531
  result.style = model.style;
1393
1532
  return result;
1394
1533
  }
1534
+ /**
1535
+ * Set the z-index for the ClusterLayer.
1536
+ *
1537
+ * @param {number} zIndex - The new z-index for the ClusterLayer.
1538
+ * @return {ClusterLayerSettings} - The updated ClusterLayerSettings object.
1539
+ */
1395
1540
  setZIndex(zIndex) {
1396
1541
  return ClusterLayerSettings.copy({ ...this, zIndex });
1397
1542
  }
1543
+ /**
1544
+ * Sets the distance value for ClusterLayerSettings.
1545
+ *
1546
+ * @param {number} distance - The distance value to be set.
1547
+ * @return {ClusterLayerSettings} - The modified ClusterLayerSettings object.
1548
+ */
1398
1549
  setDistance(distance) {
1399
1550
  return ClusterLayerSettings.copy({ ...this, distance });
1400
1551
  }
1552
+ /**
1553
+ * Sets the name of the ClusterLayerSettings object.
1554
+ *
1555
+ * @param {string} name - The name to set for the ClusterLayerSettings.
1556
+ * @return {ClusterLayerSettings} - A new ClusterLayerSettings object with the updated name.
1557
+ */
1401
1558
  setName(name) {
1402
1559
  return ClusterLayerSettings.copy({ ...this, name });
1403
1560
  }
1561
+ /**
1562
+ * Sets the maximum zoom level for the Cluster Layer.
1563
+ *
1564
+ * @param {number} maxZoom - The maximum zoom level to be set.
1565
+ * @return {ClusterLayerSettings} - The updated ClusterLayerSettings object.
1566
+ */
1404
1567
  setMaxZoom(maxZoom) {
1405
1568
  return ClusterLayerSettings.copy({ ...this, maxZoom });
1406
1569
  }
1570
+ /**
1571
+ * Sets the minimum zoom level for the ClusterLayerSettings.
1572
+ *
1573
+ * @param {number} minZoom - The minimum zoom level to set.
1574
+ * @return {ClusterLayerSettings} - The updated ClusterLayerSettings object.
1575
+ */
1407
1576
  setMinZoom(minZoom) {
1408
1577
  return ClusterLayerSettings.copy({ ...this, minZoom });
1409
1578
  }
1579
+ /**
1580
+ * Sets the cluster cancel number for the ClusterLayerSettings.
1581
+ *
1582
+ * @param {number} clusterCancel - The new cluster cancel number.
1583
+ * @returns {ClusterLayerSettings} - The updated ClusterLayerSettings object.
1584
+ */
1410
1585
  setClusterCancel(clusterCancel) {
1411
1586
  return ClusterLayerSettings.copy({ ...this, clusterCancel });
1412
1587
  }
1588
+ /**
1589
+ * Sets the value of 'bbox' property in the ClusterLayerSettings object.
1590
+ *
1591
+ * @param {boolean} bbox - A boolean value indicating whether to include bounding box calculation in the cluster layer settings.
1592
+ * @returns {ClusterLayerSettings} - The updated ClusterLayerSettings object with the newly set 'bbox' value.
1593
+ */
1413
1594
  setBbox(bbox) {
1414
1595
  return ClusterLayerSettings.copy({ ...this, bbox });
1415
1596
  }
1597
+ /**
1598
+ * Sets the style for the ClusterLayerSettings.
1599
+ *
1600
+ * @param {function} style - A function that takes an array of identified features as input and returns a Style or StyleFunction.
1601
+ *
1602
+ * @return {ClusterLayerSettings} - The updated ClusterLayerSettings object with the new style applied.
1603
+ */
1416
1604
  setStyle(style) {
1417
1605
  return ClusterLayerSettings.copy({ ...this, style });
1418
1606
  }
1607
+ /**
1608
+ * Checks if the current ClusterLayerSettings object is the same as the specified model.
1609
+ *
1610
+ * @param {ClusterLayerSettings} model - The model to compare with the current object.
1611
+ *
1612
+ * @return {boolean} - Returns true if the current ClusterLayerSettings object is the same as the specified model, otherwise false.
1613
+ */
1419
1614
  isSame(model) {
1420
1615
  if (this.maxZoom !== model.maxZoom)
1421
1616
  return false;
@@ -1517,6 +1712,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1517
1712
  }]
1518
1713
  }] });
1519
1714
 
1715
+ /**
1716
+ * Represents a cluster layer component.
1717
+ */
1520
1718
  class ClusterLayerComponent extends DestructibleComponent {
1521
1719
  constructor(postboy, factory) {
1522
1720
  super();
@@ -1526,18 +1724,23 @@ class ClusterLayerComponent extends DestructibleComponent {
1526
1724
  this._settings = new ClusterLayerSettings();
1527
1725
  this.onDestroy = () => this.removeLayer();
1528
1726
  }
1529
- ngOnInit() {
1530
- this.postboy
1531
- .subscribe(MapRenderedEvent.ID)
1532
- .pipe(filter((m) => !!m), first())
1533
- .subscribe((m) => this.initLayer());
1534
- }
1727
+ /**
1728
+ * Sets the settings for the cluster layer.
1729
+ *
1730
+ * @param {ClusterLayerSettings | undefined} value - The settings for the cluster layer.
1731
+ */
1535
1732
  set settings(value) {
1536
1733
  if (!value || this._settings.isSame(value))
1537
1734
  return;
1538
1735
  this._settings = value;
1539
1736
  this.initLayer();
1540
1737
  }
1738
+ ngOnInit() {
1739
+ this.postboy
1740
+ .subscribe(MapRenderedEvent.ID)
1741
+ .pipe(filter((m) => !!m), first())
1742
+ .subscribe((m) => this.initLayer());
1743
+ }
1541
1744
  initLayer() {
1542
1745
  this.removeLayer();
1543
1746
  this.manager = this.factory.build(this._settings, this.postboy);
@@ -1589,8 +1792,8 @@ class MapPlateComponent extends DestructibleComponent {
1589
1792
  this.registrator = registrator;
1590
1793
  this.detector = detector;
1591
1794
  this.osmUrl = '';
1592
- this._settings = new MapSettings();
1593
1795
  this.drawingLayerSettings = new FeatureLayerSettings().setName(MapConstants.DrawingLayerId);
1796
+ this._settings = new MapSettings();
1594
1797
  this.onDestroy = () => {
1595
1798
  this.registrator.down();
1596
1799
  };
@@ -1652,6 +1855,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1652
1855
  type: Input
1653
1856
  }] } });
1654
1857
 
1858
+ /**
1859
+ * MarkersComponent is a component that displays markers on a map.
1860
+ * It listens for changes in the `markers` input property and
1861
+ * automatically puts the markers on the map using the MapPostboyService.
1862
+ */
1655
1863
  class MarkersComponent extends DestructibleComponent {
1656
1864
  constructor(postboy) {
1657
1865
  super();
@@ -1659,6 +1867,11 @@ class MarkersComponent extends DestructibleComponent {
1659
1867
  this.layerName = '';
1660
1868
  this._markers = [];
1661
1869
  }
1870
+ /**
1871
+ * Sets the markers property.
1872
+ *
1873
+ * @param {MarkerModel[]} value - The array of MarkerModel objects to set as markers.
1874
+ */
1662
1875
  set markers(value) {
1663
1876
  this._markers = value ?? [];
1664
1877
  this.putMarkers();
@@ -1716,22 +1929,12 @@ class TooltipSettings {
1716
1929
  }
1717
1930
 
1718
1931
  class TooltipComponent extends DestructibleComponent {
1719
- set settings(value) {
1720
- if (!value || this._settings.isSame(value))
1721
- return;
1722
- this._settings = value;
1723
- this.detector.detectChanges();
1724
- }
1725
1932
  constructor(postboy, detector) {
1726
1933
  super();
1727
1934
  this.postboy = postboy;
1728
1935
  this.detector = detector;
1729
- this._settings = new TooltipSettings();
1730
1936
  this.show = false;
1731
- this.removeOverlay = () => {
1732
- !!this.overlay && this.map?.removeOverlay(this.overlay);
1733
- this.show = false;
1734
- };
1937
+ this._settings = new TooltipSettings();
1735
1938
  this.options = (coordinates) => {
1736
1939
  return {
1737
1940
  element: this.container?.nativeElement,
@@ -1740,12 +1943,29 @@ class TooltipComponent extends DestructibleComponent {
1740
1943
  position: coordinates,
1741
1944
  };
1742
1945
  };
1946
+ this.removeOverlay = () => {
1947
+ !!this.overlay && this.map?.removeOverlay(this.overlay);
1948
+ this.show = false;
1949
+ };
1950
+ }
1951
+ set settings(value) {
1952
+ if (!value || this._settings.isSame(value))
1953
+ return;
1954
+ this._settings = value;
1955
+ this.detector.detectChanges();
1743
1956
  }
1744
1957
  ngOnInit() {
1745
1958
  this.subs.push(this.observeMapRender());
1746
1959
  this.subs.push(this.observeMapClick());
1747
1960
  this.subs.push(this.observeClose());
1748
1961
  }
1962
+ addOverlay(coordinates) {
1963
+ this.removeOverlay();
1964
+ this.overlay = new Overlay(this.options(coordinates));
1965
+ this.map?.addOverlay(this.overlay);
1966
+ this.show = true;
1967
+ this.detector.detectChanges();
1968
+ }
1749
1969
  observeMapClick() {
1750
1970
  return this.postboy.subscribe(MapClickEvent.ID).subscribe((ev) => {
1751
1971
  this._settings.show(ev) ? this.addOverlay(ev.coordinates) : this.removeOverlay();
@@ -1762,13 +1982,6 @@ class TooltipComponent extends DestructibleComponent {
1762
1982
  this.map = m.map;
1763
1983
  });
1764
1984
  }
1765
- addOverlay(coordinates) {
1766
- this.removeOverlay();
1767
- this.overlay = new Overlay(this.options(coordinates));
1768
- this.map?.addOverlay(this.overlay);
1769
- this.show = true;
1770
- this.detector.detectChanges();
1771
- }
1772
1985
  }
1773
1986
  TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TooltipComponent, deps: [{ token: MapPostboyService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1774
1987
  TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TooltipComponent, selector: "art-tooltip", inputs: { settings: "settings" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["tip"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #tip [class]=\"['tooltip-wrapper', _settings.containerClass]\" [hidden]=\"!show\">\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".tooltip-wrapper{position:absolute}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
@@ -1782,6 +1995,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1782
1995
  type: Input
1783
1996
  }] } });
1784
1997
 
1998
+ /**
1999
+ * Component for rendering polygons on a map.
2000
+ * It listens for changes in the `polygons` input property and
2001
+ * automatically puts the polygons on the map using the MapPostboyService.
2002
+ */
1785
2003
  class PolygonsComponent extends DestructibleComponent {
1786
2004
  constructor(postboy) {
1787
2005
  super();
@@ -1789,6 +2007,11 @@ class PolygonsComponent extends DestructibleComponent {
1789
2007
  this.layerName = '';
1790
2008
  this._polygons = [];
1791
2009
  }
2010
+ /**
2011
+ * Sets the value of polygons.
2012
+ *
2013
+ * @param {PolygonModel[]} value - The new value for polygons.
2014
+ */
1792
2015
  set polygons(value) {
1793
2016
  this._polygons = value ?? [];
1794
2017
  this.putPolygons();
@@ -1816,14 +2039,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1816
2039
  type: Input
1817
2040
  }] } });
1818
2041
 
2042
+ /**
2043
+ * Represents the settings for a zoom control.
2044
+ */
1819
2045
  class ZoomControlSettings {
1820
2046
  constructor() {
2047
+ /**
2048
+ * The CSS class name of the control element.
2049
+ *
2050
+ * @type {string}
2051
+ */
1821
2052
  this.controlClass = 'ol-zoom';
2053
+ /**
2054
+ * The CSS class name for zoom in button.
2055
+ * @type {string}
2056
+ */
1822
2057
  this.zoomInClass = 'ol-zoom-in';
2058
+ /**
2059
+ * The CSS class name for the zoom out button element.
2060
+ *
2061
+ * @type {string}
2062
+ */
1823
2063
  this.zoomOutClass = 'ol-zoom-out';
2064
+ /**
2065
+ * The label for the zoom in action.
2066
+ *
2067
+ * @type {string}
2068
+ */
1824
2069
  this.zoomInLabel = 'Zoom In';
2070
+ /**
2071
+ * The label for the zoom out control.
2072
+ *
2073
+ * @type {string}
2074
+ */
1825
2075
  this.zoomOutLabel = 'Zoom Out';
1826
2076
  }
2077
+ /**
2078
+ * Copies the provided ZoomControlSettings object.
2079
+ *
2080
+ * @param {ZoomControlSettings} model - The ZoomControlSettings object to be copied.
2081
+ * @return {ZoomControlSettings} - The copied ZoomControlSettings object.
2082
+ */
1827
2083
  static copy(model) {
1828
2084
  const result = new ZoomControlSettings();
1829
2085
  result.controlClass = model.controlClass;
@@ -1833,6 +2089,13 @@ class ZoomControlSettings {
1833
2089
  result.zoomOutLabel = model.zoomOutLabel;
1834
2090
  return result;
1835
2091
  }
2092
+ /**
2093
+ * Checks if the current ZoomControlSettings object is equal to the given model.
2094
+ *
2095
+ * @param {ZoomControlSettings} model - The ZoomControlSettings object to compare with.
2096
+ *
2097
+ * @return {boolean} - true if the current object is equal to the given model, false otherwise.
2098
+ */
1836
2099
  isSame(model) {
1837
2100
  if (this.zoomInClass !== model.zoomInClass)
1838
2101
  return false;
@@ -1846,30 +2109,61 @@ class ZoomControlSettings {
1846
2109
  return false;
1847
2110
  return true;
1848
2111
  }
2112
+ /**
2113
+ * Sets the zoom in label of the Zoom Control Settings.
2114
+ *
2115
+ * @param {string} zoomInLabel - The label for the zoom in button.
2116
+ * @return {ZoomControlSettings} - The new Zoom Control Settings object with the updated zoom in label.
2117
+ */
1849
2118
  setZoomInLabel(zoomInLabel) {
1850
2119
  return ZoomControlSettings.copy({ ...this, zoomInLabel });
1851
2120
  }
2121
+ /**
2122
+ * Sets the zoomOutClass property of the ZoomControlSettings object.
2123
+ *
2124
+ * @param {string} zoomOutClass - The CSS class to be assigned to the zoom out button.
2125
+ * @return {ZoomControlSettings} - The updated ZoomControlSettings object with the new zoomOutClass value.
2126
+ */
1852
2127
  setZoomOutClass(zoomOutClass) {
1853
2128
  return ZoomControlSettings.copy({ ...this, zoomOutClass });
1854
2129
  }
2130
+ /**
2131
+ * Sets the zoom in class for the zoom control settings.
2132
+ *
2133
+ * @param {string} zoomInClass - The new zoom in class to be set.
2134
+ * @return {ZoomControlSettings} - The updated zoom control settings.
2135
+ */
1855
2136
  setZoomInClass(zoomInClass) {
1856
2137
  return ZoomControlSettings.copy({ ...this, zoomInClass });
1857
2138
  }
2139
+ /**
2140
+ * Set the label for the zoom out control.
2141
+ *
2142
+ * @param {string} zoomOutLabel - The label for the zoom out control.
2143
+ * @returns {ZoomControlSettings} - The updated zoom control settings.
2144
+ */
1858
2145
  setZoomOutLabel(zoomOutLabel) {
1859
2146
  return ZoomControlSettings.copy({ ...this, zoomOutLabel });
1860
2147
  }
2148
+ /**
2149
+ * Sets the control class for the ZoomControlSettings.
2150
+ *
2151
+ * @param {string} controlClass - The class name of the control to be set.
2152
+ *
2153
+ * @return {ZoomControlSettings} - The modified ZoomControlSettings object.
2154
+ */
1861
2155
  setControlClass(controlClass) {
1862
2156
  return ZoomControlSettings.copy({ ...this, controlClass });
1863
2157
  }
1864
2158
  }
1865
2159
 
2160
+ /**
2161
+ * @class
2162
+ * @classdesc Represents a component for the Zoom control on a map.
2163
+ * @extends DestructibleComponent
2164
+ * @implements OnInit
2165
+ */
1866
2166
  class MapControlZoomComponent extends DestructibleComponent {
1867
- set settings(value) {
1868
- if (!value || this._settings.isSame(value))
1869
- return;
1870
- this._settings = value;
1871
- this.setControl();
1872
- }
1873
2167
  constructor(postboy) {
1874
2168
  super();
1875
2169
  this.postboy = postboy;
@@ -1879,6 +2173,23 @@ class MapControlZoomComponent extends DestructibleComponent {
1879
2173
  };
1880
2174
  this.eliminate = () => !!this.map && !!this.control && this.map.removeControl(this.control);
1881
2175
  }
2176
+ /**
2177
+ * Sets the settings for the Zoom Control.
2178
+ *
2179
+ * @param {ZoomControlSettings | undefined} value - The new settings for the Zoom Control.
2180
+ *
2181
+ * @description
2182
+ * This method sets the settings for the Zoom Control. It takes a parameter `value` which should be an object of type `ZoomControlSettings` or `undefined`.
2183
+ *
2184
+ * If the `value` is `undefined` or the same as the current settings, the method will return without making any changes.
2185
+ *
2186
+ */
2187
+ set settings(value) {
2188
+ if (!value || this._settings.isSame(value))
2189
+ return;
2190
+ this._settings = value;
2191
+ this.setControl();
2192
+ }
1882
2193
  ngOnInit() {
1883
2194
  this.postboy
1884
2195
  .subscribe(MapRenderedEvent.ID)
@@ -1954,7 +2265,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1954
2265
  }]
1955
2266
  }] });
1956
2267
 
2268
+ /**
2269
+ * Helper class to create and modify marker styles.
2270
+ */
1957
2271
  class MarkerStyleHelper {
2272
+ /**
2273
+ * Creates a new Style object from an SVG.
2274
+ * @param {string} svg - The SVG string.
2275
+ * @param {Array<number>} [size=[30, 30]] - The size of the icon image.
2276
+ * @param {number} [zIndex=400] - The zIndex of the style.
2277
+ * @returns {Style} A new Style object.
2278
+ */
1958
2279
  static fromSvg(svg, size = [30, 30], zIndex = 400) {
1959
2280
  let image = new Image();
1960
2281
  image.src = 'data:image/svg+xml,' + escape(svg);
@@ -1966,6 +2287,15 @@ class MarkerStyleHelper {
1966
2287
  zIndex,
1967
2288
  });
1968
2289
  }
2290
+ /**
2291
+ * Returns a Style object with a circle style.
2292
+ *
2293
+ * @param {number} radius - The radius of the circle.
2294
+ * @param {string} fill - The fill color of the circle. Format: '#RRGGBB' or 'rgba(R, G, B, A)'.
2295
+ * @param {string} strokeColor - The stroke color of the circle. Format: '#RRGGBB' or 'rgba(R, G, B, A)'.
2296
+ * @param {number} [strokeWidth=1] - The width of the stroke. Default is 1.
2297
+ * @returns {Style} - A Style object with a Circle image.
2298
+ */
1969
2299
  static circle(radius, fill, strokeColor, strokeWidth = 1) {
1970
2300
  return new Style({
1971
2301
  image: new Circle({
@@ -1975,13 +2305,32 @@ class MarkerStyleHelper {
1975
2305
  }),
1976
2306
  });
1977
2307
  }
2308
+ /**
2309
+ * Applies the given Text to the provided Style.
2310
+ *
2311
+ * @param {Style} style - The Style to modify.
2312
+ * @param {Text} text - The Text to apply to the Style.
2313
+ * @return {Style} - The modified Style with the applied Text.
2314
+ */
1978
2315
  static withText(style, text) {
1979
2316
  style.setText(text);
1980
2317
  return style;
1981
2318
  }
1982
2319
  }
1983
2320
 
2321
+ /**
2322
+ * A helper class for creating polygon styles.
2323
+ * @class
2324
+ */
1984
2325
  class PolygonStyleHelper {
2326
+ /**
2327
+ * Creates a Style object with the given fill color, stroke color, and stroke width.
2328
+ *
2329
+ * @param {string} fill - The fill color in hexadecimal or RGB format.
2330
+ * @param {string} stroke - The stroke color in hexadecimal or RGB format.
2331
+ * @param {number} [strokeWidth=1] - The width of the stroke. Defaults to 1.
2332
+ * @return {Style} The created Style object.
2333
+ */
1985
2334
  static simple(fill, stroke, strokeWidth = 1) {
1986
2335
  return new Style({
1987
2336
  fill: new Fill({
@@ -1993,6 +2342,15 @@ class PolygonStyleHelper {
1993
2342
  }),
1994
2343
  });
1995
2344
  }
2345
+ /**
2346
+ * Creates a new Style object with the given fill, stroke, stroke width, and pin radius.
2347
+ *
2348
+ * @param {string} fill - The color to use for the fill of the style.
2349
+ * @param {string} stroke - The color to use for the stroke of the style.
2350
+ * @param {number} [strokeWidth=1] - The width of the stroke. Defaults to 1.
2351
+ * @param {number} [pinRadius=5] - The radius of the circle used as the image for the style. Defaults to 5.
2352
+ * @returns {Style} - The newly created Style object.
2353
+ */
1996
2354
  static edit(fill, stroke, strokeWidth = 1, pinRadius = 5) {
1997
2355
  return new Style({
1998
2356
  image: new Circle({
@@ -2012,7 +2370,18 @@ class PolygonStyleHelper {
2012
2370
  }
2013
2371
  }
2014
2372
 
2373
+ /**
2374
+ * Helper class for creating text styles.
2375
+ */
2015
2376
  class TextStyleHelper {
2377
+ /**
2378
+ * Creates a new instance of the Text class with the specified properties.
2379
+ *
2380
+ * @param {string} text - The text content of the Text object.
2381
+ * @param {string} font - The font style of the Text object.
2382
+ * @param {string} color - The color of the Text object.
2383
+ * @return {Text} A new instance of the Text class.
2384
+ */
2016
2385
  static get(text, font, color) {
2017
2386
  return new Text({
2018
2387
  text: text,
@@ -2025,37 +2394,41 @@ class TextStyleHelper {
2025
2394
  }
2026
2395
  }
2027
2396
 
2397
+ /**
2398
+ * A helper class for converting and stringify features.
2399
+ */
2028
2400
  class StringifyFeatureHelper {
2029
2401
  static polygon(feature, format = FeatureOutputFormat.GeoJson) {
2030
2402
  return format === FeatureOutputFormat.GeoJson
2031
2403
  ? new GeoJSON().writeFeature(feature)
2032
2404
  : new WKT().writeFeature(feature);
2033
2405
  }
2406
+ /**
2407
+ * Creates a polygon feature representing a circle based on a given feature with a circle geometry.
2408
+ *
2409
+ * @param {Feature<Geometry>} feature - The input feature with a circle geometry.
2410
+ * @param {FeatureOutputFormat} format - The format for outputting the polygon feature. (default: FeatureOutputFormat.GeoJson)
2411
+ *
2412
+ * @return {string} - The string representation of the polygon feature.
2413
+ */
2034
2414
  static circle(feature, format = FeatureOutputFormat.GeoJson) {
2035
- // const clone = feature.clone();
2036
- // clone.setGeometry(fromCircle(feature.getGeometry()! as Circle));
2037
- const tetemp = feature.getGeometryName();
2038
2415
  const circle = feature.getGeometry();
2039
- // const temp = StringifyFeatureHelper.drawCircle(circle.getCenter(), circle.getRadius());
2040
- const ttt = feature.getGeometry().getExtent();
2041
- const eastPoint = [ttt[2], (ttt[1] + ttt[3]) / 2];
2042
- const aaa = [
2043
- ...transform([ttt[0], ttt[1]], 'EPSG:4326', 'EPSG:3857'),
2044
- ...transform([ttt[2], ttt[3]], 'EPSG:4326', 'EPSG:3857'),
2416
+ const ext = feature.getGeometry().getExtent();
2417
+ const coords = [
2418
+ ...transform([ext[0], ext[1]], 'EPSG:4326', 'EPSG:3857'),
2419
+ ...transform([ext[2], ext[3]], 'EPSG:4326', 'EPSG:3857'),
2045
2420
  ];
2046
- const radius = (aaa[2] - aaa[0]) / 2;
2047
- const radius2 = new LineString([circle.getCenter(), eastPoint]).getLength();
2421
+ const radius = (coords[2] - coords[0]) / 2;
2048
2422
  const polygonGeom = new Polygon(StringifyFeatureHelper.drawCircle(circle.getCenter(), radius));
2049
- // var edgeCoordinate = [circle.getCenter()[0] + radius, circle.getCenter()[1]];
2050
- // var wgs84Sphere = new Sphere(6378137);
2051
2423
  return StringifyFeatureHelper.polygon(new Feature(polygonGeom), format);
2052
- // const rad = circle.getRadius();
2053
- // const degrees = 180 / Math.PI; // radians to degrees
2054
- // const radians = Math.PI / 180; // degrees to radians
2055
- // const rlat = rad * degrees * 1000;
2056
- // const rlng = rad * radians;
2057
- // return StringifyFeatureHelper.polygon(new Feature<Geometry>(circular(circle.getCenter(),circle.getRadius() * METERS_PER_UNIT)), format);
2058
2424
  }
2425
+ /**
2426
+ * Draw a circle based on a center point and radius.
2427
+ *
2428
+ * @param {number[]} point - The center point coordinates in EPSG:4326 format.
2429
+ * @param {number} radius - The radius of the circle in meters.
2430
+ * @return {Coordinate[][]} - The coordinates of the circle boundary in EPSG:4326 format.
2431
+ */
2059
2432
  static drawCircle(point, radius) {
2060
2433
  const tetetemp = transform(point, 'EPSG:4326', 'EPSG:3857');
2061
2434
  // const tetetemp = point;
@@ -2088,5 +2461,5 @@ class StringifyFeatureHelper {
2088
2461
  * Generated bundle index. Do not edit.
2089
2462
  */
2090
2463
 
2091
- export { AddControlCommand, CalculateAreaExecutor, CancelDrawingCommand, CancelFeatureModificationCommand, CloseTooltipCommand, ClusterLayerComponent, ClusterLayerSettings, DrawSelectionAreaCommand, DrawingType, FeatureLayerComponent, FeatureLayerSettings, FeatureOutputFormat, FitToPolygonsCommand, MapClickEvent, MapControl, MapControlZoomComponent, MapLyrs, MapLyrsLabel, MapModule, MapMoveEndEvent, MapPlateComponent, MapPostboyService, MapRenderedEvent, MapSettings, MarkerModel, MarkerStyleHelper, MarkersComponent, MessageRegistratorService, ModifyFeatureCommand, OsmTileLayerComponent, PolygonModel, PolygonStyleHelper, PolygonsComponent, RemoveControlCommand, SetMapCenterCommand, StartDrawingCommand, StringifyFeatureHelper, TextStyleHelper, TileLayerComponent, TileLayerSettings, TooltipComponent, TooltipSettings, ZoomControlSettings };
2464
+ export { AddControlCommand, CalculateAreaExecutor, CancelDrawingCommand, CancelFeatureModificationCommand, CloseTooltipCommand, ClusterLayerComponent, ClusterLayerSettings, DrawSelectionAreaCommand, DrawingType, FeatureLayerComponent, FeatureLayerSettings, FeatureOutputFormat, FitToPolygonsCommand, GetMapPositionExecutor, MapClickEvent, MapControl, MapControlZoomComponent, MapLyrs, MapLyrsLabel, MapModule, MapMoveEndEvent, MapPlateComponent, MapPostboyService, MapRenderedEvent, MapSettings, MarkerModel, MarkerStyleHelper, MarkersComponent, MessageRegistratorService, ModifyFeatureCommand, OsmTileLayerComponent, PolygonModel, PolygonStyleHelper, PolygonsComponent, RemoveControlCommand, SetMapCenterCommand, StartDrawingCommand, StringifyFeatureHelper, TextStyleHelper, TileLayerComponent, TileLayerSettings, TooltipComponent, TooltipSettings, ZoomControlSettings };
2092
2465
  //# sourceMappingURL=maps-components.mjs.map