@artstesh/maps 1.1.22 → 1.1.24

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 (47) hide show
  1. package/dist/bundles/maps-components-src-map.umd.js +157 -6
  2. package/dist/bundles/maps-components-src-map.umd.js.map +1 -1
  3. package/dist/bundles/maps-components.umd.js +157 -6
  4. package/dist/bundles/maps-components.umd.js.map +1 -1
  5. package/dist/esm2015/map/map-plate/features/polygons/polygons.component.js +6 -2
  6. package/dist/esm2015/map/map-plate/layers/feature-layer/feature-layer.settings.js +13 -1
  7. package/dist/esm2015/map/map-plate/map-plate.component.js +5 -1
  8. package/dist/esm2015/map/messages/events/map-feature-hovered.event.js +21 -0
  9. package/dist/esm2015/map/messages/events/map-pointer-move.event.js +20 -0
  10. package/dist/esm2015/map/messages/executors/polygon-self-intersection.executor.js +9 -0
  11. package/dist/esm2015/map/messages/index.js +4 -1
  12. package/dist/esm2015/map/models/map.constants.js +2 -1
  13. package/dist/esm2015/map/services/feature.service.js +53 -2
  14. package/dist/esm2015/map/services/map-feature.service.js +22 -2
  15. package/dist/esm2015/map/services/message-registrator.service.js +8 -2
  16. package/dist/esm2015/src/map/map-plate/features/polygons/polygons.component.js +6 -2
  17. package/dist/esm2015/src/map/map-plate/layers/feature-layer/feature-layer.settings.js +13 -1
  18. package/dist/esm2015/src/map/map-plate/map-plate.component.js +5 -1
  19. package/dist/esm2015/src/map/messages/events/map-feature-hovered.event.js +21 -0
  20. package/dist/esm2015/src/map/messages/events/map-pointer-move.event.js +20 -0
  21. package/dist/esm2015/src/map/messages/executors/polygon-self-intersection.executor.js +9 -0
  22. package/dist/esm2015/src/map/messages/index.js +4 -1
  23. package/dist/esm2015/src/map/models/map.constants.js +2 -1
  24. package/dist/esm2015/src/map/services/feature.service.js +53 -2
  25. package/dist/esm2015/src/map/services/map-feature.service.js +22 -2
  26. package/dist/esm2015/src/map/services/message-registrator.service.js +8 -2
  27. package/dist/fesm2015/maps-components-src-map.js +143 -6
  28. package/dist/fesm2015/maps-components-src-map.js.map +1 -1
  29. package/dist/fesm2015/maps-components.js +143 -6
  30. package/dist/fesm2015/maps-components.js.map +1 -1
  31. package/dist/map/map-plate/layers/feature-layer/feature-layer.settings.d.ts +22 -0
  32. package/dist/map/messages/events/map-feature-hovered.event.d.ts +19 -0
  33. package/dist/map/messages/events/map-pointer-move.event.d.ts +17 -0
  34. package/dist/map/messages/executors/polygon-self-intersection.executor.d.ts +7 -0
  35. package/dist/map/messages/index.d.ts +3 -0
  36. package/dist/map/models/map.constants.d.ts +1 -0
  37. package/dist/map/services/feature.service.d.ts +5 -0
  38. package/dist/map/services/map-feature.service.d.ts +1 -0
  39. package/dist/src/map/map-plate/layers/feature-layer/feature-layer.settings.d.ts +22 -0
  40. package/dist/src/map/messages/events/map-feature-hovered.event.d.ts +19 -0
  41. package/dist/src/map/messages/events/map-pointer-move.event.d.ts +17 -0
  42. package/dist/src/map/messages/executors/polygon-self-intersection.executor.d.ts +7 -0
  43. package/dist/src/map/messages/index.d.ts +3 -0
  44. package/dist/src/map/models/map.constants.d.ts +1 -0
  45. package/dist/src/map/services/feature.service.d.ts +5 -0
  46. package/dist/src/map/services/map-feature.service.d.ts +1 -0
  47. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('ol'), require('ol/geom'), require('ol/format'), require('ol/extent'), require('ol/geom/Polygon'), require('ol/control'), require('ol/proj'), require('@artstesh/postboy'), require('ol/interaction'), require('ol/interaction/Draw'), require('ol/sphere'), require('@artstesh/collections'), require('rxjs/operators'), require('ol/source'), require('ol/layer/Tile'), require('ol/source/OSM'), require('ol/layer'), require('ol/loadingstrategy'), require('ol/source/Cluster'), require('rxjs'), require('ol/Map'), require('ol/View'), require('ol/Overlay'), require('ol/style/Style'), require('ol/style'), require('ol/proj/epsg4326')) :
3
- typeof define === 'function' && define.amd ? define('maps-components/src/map', ['exports', '@angular/core', '@angular/common', 'ol', 'ol/geom', 'ol/format', 'ol/extent', 'ol/geom/Polygon', 'ol/control', 'ol/proj', '@artstesh/postboy', 'ol/interaction', 'ol/interaction/Draw', 'ol/sphere', '@artstesh/collections', 'rxjs/operators', 'ol/source', 'ol/layer/Tile', 'ol/source/OSM', 'ol/layer', 'ol/loadingstrategy', 'ol/source/Cluster', 'rxjs', 'ol/Map', 'ol/View', 'ol/Overlay', 'ol/style/Style', 'ol/style', 'ol/proj/epsg4326'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["maps-components"] = global["maps-components"] || {}, global["maps-components"].src = global["maps-components"].src || {}, global["maps-components"].src.map = {}), global.ng.core, global.ng.common, global.ol, global.geom, global.format, global.extent, global.Polygon, global.control, global.proj, global.postboy, global.interaction, global.Draw, global.Sphere, global.collections, global.rxjs.operators, global.source, global.TileLayer, global.OSM, global.layer, global.loadingstrategy, global.Cluster, global.rxjs, global.Map, global.View, global.Overlay, global.Style, global.style, global.epsg4326));
5
- })(this, (function (exports, i0, i6, ol, geom, format, extent, Polygon, control, proj, postboy, interaction, Draw, Sphere, collections, operators, source, TileLayer, OSM, layer, loadingstrategy, Cluster, rxjs, Map, View, Overlay, Style, style, epsg4326) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('ol'), require('ol/geom'), require('ol/format'), require('ol/extent'), require('ol/geom/Polygon'), require('ol/control'), require('ol/proj'), require('@artstesh/postboy'), require('ol/interaction'), require('ol/interaction/Draw'), require('ol/sphere'), require('rxjs'), require('rxjs/operators'), require('@artstesh/collections'), require('ol/source'), require('ol/layer/Tile'), require('ol/source/OSM'), require('ol/layer'), require('ol/loadingstrategy'), require('ol/source/Cluster'), require('ol/Map'), require('ol/View'), require('ol/Overlay'), require('ol/style/Style'), require('ol/style'), require('ol/proj/epsg4326')) :
3
+ typeof define === 'function' && define.amd ? define('maps-components/src/map', ['exports', '@angular/core', '@angular/common', 'ol', 'ol/geom', 'ol/format', 'ol/extent', 'ol/geom/Polygon', 'ol/control', 'ol/proj', '@artstesh/postboy', 'ol/interaction', 'ol/interaction/Draw', 'ol/sphere', 'rxjs', 'rxjs/operators', '@artstesh/collections', 'ol/source', 'ol/layer/Tile', 'ol/source/OSM', 'ol/layer', 'ol/loadingstrategy', 'ol/source/Cluster', 'ol/Map', 'ol/View', 'ol/Overlay', 'ol/style/Style', 'ol/style', 'ol/proj/epsg4326'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["maps-components"] = global["maps-components"] || {}, global["maps-components"].src = global["maps-components"].src || {}, global["maps-components"].src.map = {}), global.ng.core, global.ng.common, global.ol, global.geom, global.format, global.extent, global.Polygon, global.control, global.proj, global.postboy, global.interaction, global.Draw, global.Sphere, global.rxjs, global.rxjs.operators, global.collections, global.source, global.TileLayer, global.OSM, global.layer, global.loadingstrategy, global.Cluster, global.Map, global.View, global.Overlay, global.Style, global.style, global.epsg4326));
5
+ })(this, (function (exports, i0, i6, ol, geom, format, extent, Polygon, control, proj, postboy, interaction, Draw, Sphere, rxjs, operators, collections, source, TileLayer, OSM, layer, loadingstrategy, Cluster, Map, View, Overlay, Style, style, epsg4326) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -677,7 +677,8 @@
677
677
  return MapConstants;
678
678
  }());
679
679
  MapConstants.FeatureInfo = 'f-info';
680
- MapConstants.DrawingLayerId = '93a981756ec7';
680
+ MapConstants.DrawingLayerId = '93a981756ec7';
681
+ MapConstants.FeatureLayerName = 'L-253';
681
682
 
682
683
  var MarkerModel = /** @class */ (function () {
683
684
  function MarkerModel(lat, lng, id, info) {
@@ -1063,6 +1064,51 @@
1063
1064
  }(postboy.PostboyGenericMessage));
1064
1065
  MapMoveEndEvent.ID = 'd210ec7e-032f-4ce8-8a39-7b816519eaae';
1065
1066
 
1067
+ /**
1068
+ * Represents an event that is triggered when the pointer moves on a map.
1069
+ * This class extends PostboyGenericMessage.
1070
+ *
1071
+ * It contains information about the coordinates of the pointer when the event occurs.
1072
+ */
1073
+ var MapPointerMoveEvent = /** @class */ (function (_super) {
1074
+ __extends(MapPointerMoveEvent, _super);
1075
+ /**
1076
+ * Constructor for initializing an instance with a given point.
1077
+ *
1078
+ * @param {Array<number>} point - An array representing the coordinates of the point.
1079
+ */
1080
+ function MapPointerMoveEvent(point) {
1081
+ var _this = _super.call(this) || this;
1082
+ _this.point = point;
1083
+ return _this;
1084
+ }
1085
+ return MapPointerMoveEvent;
1086
+ }(postboy.PostboyGenericMessage));
1087
+ MapPointerMoveEvent.ID = '193cb41d-2489-45cc-b349-59c3ec18ed72';
1088
+
1089
+ /**
1090
+ * Represents an event triggered when a map feature is hovered over.
1091
+ * This event contains information about the hovered feature and its associated layer.
1092
+ * Extends the PostboyGenericMessage class.
1093
+ */
1094
+ var MapFeatureHoveredEvent = /** @class */ (function (_super) {
1095
+ __extends(MapFeatureHoveredEvent, _super);
1096
+ /**
1097
+ * Constructs an instance of the class.
1098
+ *
1099
+ * @param {Feature|null} feature - The feature associated with this instance. Can be null.
1100
+ * @param {string|null} layer - The layer associated with this instance. Can be null.
1101
+ */
1102
+ function MapFeatureHoveredEvent(feature, layer) {
1103
+ var _this = _super.call(this) || this;
1104
+ _this.feature = feature;
1105
+ _this.layer = layer;
1106
+ return _this;
1107
+ }
1108
+ return MapFeatureHoveredEvent;
1109
+ }(postboy.PostboyGenericMessage));
1110
+ MapFeatureHoveredEvent.ID = 'eb9b032a-1616-4823-a628-0fd8ffc3b57a';
1111
+
1066
1112
  /**
1067
1113
  * A class responsible for executing filtering of geographical features
1068
1114
  * based on a specific geographical point (latitude and longitude).
@@ -1142,6 +1188,17 @@
1142
1188
  }(postboy.PostboyExecutor));
1143
1189
  GetMapPositionExecutor.ID = '52c95689-d09b-4082-ba58-9183ea96a213';
1144
1190
 
1191
+ var PolygonSelfIntersectionExecutor = /** @class */ (function (_super) {
1192
+ __extends(PolygonSelfIntersectionExecutor, _super);
1193
+ function PolygonSelfIntersectionExecutor(polygon) {
1194
+ var _this = _super.call(this) || this;
1195
+ _this.polygon = polygon;
1196
+ return _this;
1197
+ }
1198
+ return PolygonSelfIntersectionExecutor;
1199
+ }(postboy.PostboyGenericMessage));
1200
+ PolygonSelfIntersectionExecutor.ID = 'a4ef116d-fe40-4e92-9d4a-653f8b398c62';
1201
+
1145
1202
  /**
1146
1203
  * Class representing a query to get features within a specified geographical area.
1147
1204
  * The query optionally takes a set of layer names to ignore during the operation.
@@ -1318,6 +1375,20 @@
1318
1375
  return 0;
1319
1376
  return Sphere__namespace.getArea(g, { projection: 'EPSG:4326' });
1320
1377
  };
1378
+ FeatureService.polygonSelfIntersects = function (feature) {
1379
+ if (feature.getGeometry().getType() !== 'Polygon')
1380
+ return false;
1381
+ var intersections = 0;
1382
+ var segments = FeatureService.getSegmentsFromCoordinates(feature.getGeometry());
1383
+ for (var i = 0; i < segments.length; i++) {
1384
+ for (var z = i + 1; z < segments.length; z++) {
1385
+ if (!intersections && this.segmentIntersection(segments[i].getCoordinates(), segments[z].getCoordinates())) {
1386
+ intersections++;
1387
+ }
1388
+ }
1389
+ }
1390
+ return intersections !== 0;
1391
+ };
1321
1392
  FeatureService.booleanIntersects = function (g1, g2) {
1322
1393
  if (g2.getType() === 'Point')
1323
1394
  return g1.intersectsCoordinate(g2.getCoordinates());
@@ -1327,6 +1398,43 @@
1327
1398
  return g1.intersectsCoordinate(g2.getInteriorPoint().getCoordinates());
1328
1399
  return false;
1329
1400
  };
1401
+ FeatureService.getSegmentsFromCoordinates = function (geom$1) {
1402
+ if (!geom$1)
1403
+ return [];
1404
+ var coords = geom$1.getCoordinates();
1405
+ var line = new geom.LineString(coords[0]);
1406
+ var segments = [];
1407
+ line.forEachSegment(function (s1, s2) {
1408
+ var l = new geom.LineString([s1, s2]);
1409
+ l.scale(0.999); // bug of the OL, as I see
1410
+ segments.push(l);
1411
+ });
1412
+ return segments;
1413
+ };
1414
+ FeatureService.segmentIntersection = function (s1, s2) {
1415
+ var a = s1[0], b = s1[1], c = s2[0], d = s2[1];
1416
+ var o1 = this.orientation(a, b, c);
1417
+ var o2 = this.orientation(a, b, d);
1418
+ var o3 = this.orientation(c, d, a);
1419
+ var o4 = this.orientation(c, d, b);
1420
+ return ((o1 != o2 && o3 != o4) ||
1421
+ (o1 == 0 && this.onSegment(a, d, b)) ||
1422
+ (o2 == 0 && this.onSegment(a, d, b)) ||
1423
+ (o3 == 0 && this.onSegment(d, a, d)) ||
1424
+ (o4 == 0 && this.onSegment(d, b, d)));
1425
+ };
1426
+ FeatureService.orientation = function (p, q, r) {
1427
+ var val = (q[1] - p[1]) * (r[0] - q[0]) - (q[0] - p[0]) * (r[1] - q[1]);
1428
+ if (val == 0)
1429
+ return 0; // collinear
1430
+ return val > 0 ? 1 : 2; // clock or counterclock wise
1431
+ };
1432
+ FeatureService.onSegment = function (p, q, r) {
1433
+ return (q[0] <= (p[0] > r[0] ? p[0] : r[0]) &&
1434
+ q[0] >= (p[0] < r[0] ? p[0] : r[0]) &&
1435
+ q[1] <= (p[1] > r[1] ? p[1] : r[1]) &&
1436
+ q[1] >= (p[1] < r[1] ? p[1] : r[1]));
1437
+ };
1330
1438
  return FeatureService;
1331
1439
  }());
1332
1440
 
@@ -1559,6 +1667,7 @@
1559
1667
  this.observeMapRender();
1560
1668
  this.observeFitToFeatures();
1561
1669
  this.observeFitToPolygons();
1670
+ this.observePointerMove();
1562
1671
  };
1563
1672
  MapFeatureService.prototype.observeMapRender = function () {
1564
1673
  var _this = this;
@@ -1568,6 +1677,23 @@
1568
1677
  _this.postboy.fire(_this.fitPolygonsWaiting);
1569
1678
  });
1570
1679
  };
1680
+ MapFeatureService.prototype.observePointerMove = function () {
1681
+ var _this = this;
1682
+ this.postboy.sub(MapPointerMoveEvent).subscribe(function (ev) {
1683
+ if (!_this.map)
1684
+ return;
1685
+ var featureFound = false;
1686
+ _this.map.forEachFeatureAtPixel(ev.point, function (f) {
1687
+ if (f instanceof ol.Feature) {
1688
+ _this.postboy.fire(new MapFeatureHoveredEvent(f, f.get(MapConstants.FeatureLayerName)));
1689
+ featureFound = true;
1690
+ }
1691
+ return true;
1692
+ });
1693
+ if (!featureFound)
1694
+ _this.postboy.fire(new MapFeatureHoveredEvent(null, null));
1695
+ });
1696
+ };
1571
1697
  MapFeatureService.prototype.observeFitToFeatures = function () {
1572
1698
  var _this = this;
1573
1699
  this.postboy.sub(FitToFeaturesCommand).subscribe(function (cmd) {
@@ -1895,6 +2021,8 @@
1895
2021
  this.recordSubject(CancelDrawingCommand);
1896
2022
  this.recordSubject(StartDrawingCommand);
1897
2023
  this.recordSubject(GetLayerQuery);
2024
+ this.recordSubject(MapFeatureHoveredEvent);
2025
+ this.recordWithPipe(MapPointerMoveEvent, new rxjs.Subject(), function (s) { return s.pipe(operators.debounceTime(150)); });
1898
2026
  this.recordSubject(DrawingFinishedEvent);
1899
2027
  this.recordSubject(GetFeaturesInAreaQuery);
1900
2028
  this.recordSubject(DrawSelectionAreaCommand);
@@ -1908,6 +2036,7 @@
1908
2036
  this.recordExecutor(FilterFeaturesInAreaExecutor, function (e) { return FeatureService.filterFeaturesInArea(e); });
1909
2037
  this.recordExecutor(FilterFeaturesInPointExecutor, function (e) { return FeatureService.filterFeaturesInPoint(e); });
1910
2038
  this.recordExecutor(CalculateAreaExecutor, function (e) { var _a, _b; return FeatureService.calculateArea((_b = (_a = e.polygon) === null || _a === void 0 ? void 0 : _a.feature) === null || _b === void 0 ? void 0 : _b.getGeometry()); });
2039
+ this.recordExecutor(PolygonSelfIntersectionExecutor, function (e) { return FeatureService.polygonSelfIntersects(e.polygon.feature); });
1911
2040
  this.recordExecutor(GenerateDrawExecutor, function (e) { return DrawingGenerationService.getDraw(e); });
1912
2041
  this.recordExecutor(GenerateZoomControlExecutor, function (e) { return ZoomControlFactory.build(e.settings); });
1913
2042
  this.recordExecutor(GetMapPositionExecutor, function () { return _this.state.getMapPosition(); });
@@ -2289,6 +2418,7 @@
2289
2418
  result.minZoom = model.minZoom;
2290
2419
  result.zIndex = model.zIndex;
2291
2420
  result.style = model.style;
2421
+ result.featureHoverStyle = model.featureHoverStyle;
2292
2422
  return result;
2293
2423
  };
2294
2424
  /**
@@ -2337,6 +2467,15 @@
2337
2467
  FeatureLayerSettings.prototype.setStyle = function (style) {
2338
2468
  return FeatureLayerSettings.copy(Object.assign(Object.assign({}, this), { style: style }));
2339
2469
  };
2470
+ /**
2471
+ * Sets the style to apply to features when they are hovered over.
2472
+ *
2473
+ * @param {Style | StyleFunction} featureHoverStyle - The style or style function to use for hovered features.
2474
+ * @return {FeatureLayerSettings} A new instance of FeatureLayerSettings with the updated hover style.
2475
+ */
2476
+ FeatureLayerSettings.prototype.setFeatureHoverStyle = function (featureHoverStyle) {
2477
+ return FeatureLayerSettings.copy(Object.assign(Object.assign({}, this), { featureHoverStyle: featureHoverStyle }));
2478
+ };
2340
2479
  /**
2341
2480
  * Checks if the given FeatureLayerSettings object is identical to the current object.
2342
2481
  *
@@ -2354,6 +2493,8 @@
2354
2493
  return false;
2355
2494
  if (this.style !== model.style)
2356
2495
  return false;
2496
+ if (this.featureHoverStyle !== model.featureHoverStyle)
2497
+ return false;
2357
2498
  return true;
2358
2499
  };
2359
2500
  return FeatureLayerSettings;
@@ -2802,6 +2943,9 @@
2802
2943
  _this.map.updateSize();
2803
2944
  _this.postboy.fire(new MapRenderedEvent(_this.map));
2804
2945
  });
2946
+ this.map.on('pointermove', function (ev) {
2947
+ _this.postboy.fire(new MapPointerMoveEvent(ev.pixel));
2948
+ });
2805
2949
  this.setOsm();
2806
2950
  };
2807
2951
  MapPlateComponent.prototype.setOsm = function () {
@@ -3057,9 +3201,13 @@
3057
3201
  .subscribe(function () { return _this.putPolygons(); });
3058
3202
  };
3059
3203
  PolygonsComponent.prototype.putPolygons = function () {
3204
+ var _this = this;
3060
3205
  if (!this._polygons)
3061
3206
  return;
3062
- this.postboy.fire(new PlaceLayerFeaturesCommand(this.layerName, this._polygons.map(function (m) { return m.feature; })));
3207
+ this.postboy.fire(new PlaceLayerFeaturesCommand(this.layerName, this._polygons.map(function (m) {
3208
+ m.feature.set(MapConstants.FeatureLayerName, _this.layerName);
3209
+ return m.feature;
3210
+ })));
3063
3211
  };
3064
3212
  return PolygonsComponent;
3065
3213
  }(DestructibleComponent));
@@ -3552,10 +3700,12 @@
3552
3700
  exports.MapConstants = MapConstants;
3553
3701
  exports.MapControl = MapControl;
3554
3702
  exports.MapControlZoomComponent = MapControlZoomComponent;
3703
+ exports.MapFeatureHoveredEvent = MapFeatureHoveredEvent;
3555
3704
  exports.MapLyrsLabel = MapLyrsLabel;
3556
3705
  exports.MapModule = MapModule;
3557
3706
  exports.MapMoveEndEvent = MapMoveEndEvent;
3558
3707
  exports.MapPlateComponent = MapPlateComponent;
3708
+ exports.MapPointerMoveEvent = MapPointerMoveEvent;
3559
3709
  exports.MapPostboyService = MapPostboyService;
3560
3710
  exports.MapRenderedEvent = MapRenderedEvent;
3561
3711
  exports.MapSettings = MapSettings;
@@ -3566,6 +3716,7 @@
3566
3716
  exports.ModifyFeatureCommand = ModifyFeatureCommand;
3567
3717
  exports.OsmTileLayerComponent = OsmTileLayerComponent;
3568
3718
  exports.PolygonModel = PolygonModel;
3719
+ exports.PolygonSelfIntersectionExecutor = PolygonSelfIntersectionExecutor;
3569
3720
  exports.PolygonStyleHelper = PolygonStyleHelper;
3570
3721
  exports.PolygonsComponent = PolygonsComponent;
3571
3722
  exports.RemoveControlCommand = RemoveControlCommand;