@syncfusion/ej2-maps 27.1.56 → 28.1.33

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 (36) hide show
  1. package/.gitleaksignore +37 -0
  2. package/README.md +2 -2
  3. package/dist/ej2-maps.min.js +3 -3
  4. package/dist/ej2-maps.umd.min.js +3 -3
  5. package/dist/ej2-maps.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-maps.es2015.js +528 -224
  7. package/dist/es6/ej2-maps.es2015.js.map +1 -1
  8. package/dist/es6/ej2-maps.es5.js +537 -233
  9. package/dist/es6/ej2-maps.es5.js.map +1 -1
  10. package/dist/global/ej2-maps.min.js +3 -3
  11. package/dist/global/ej2-maps.min.js.map +1 -1
  12. package/dist/global/index.d.ts +2 -2
  13. package/package.json +13 -13
  14. package/src/maps/layers/legend.d.ts +1 -1
  15. package/src/maps/layers/legend.js +40 -38
  16. package/src/maps/layers/marker.d.ts +8 -1
  17. package/src/maps/layers/marker.js +104 -33
  18. package/src/maps/maps-model.d.ts +8 -1
  19. package/src/maps/maps.d.ts +19 -3
  20. package/src/maps/maps.js +53 -15
  21. package/src/maps/model/base-model.d.ts +20 -0
  22. package/src/maps/model/base.d.ts +17 -0
  23. package/src/maps/model/base.js +9 -0
  24. package/src/maps/model/constants.d.ts +6 -0
  25. package/src/maps/model/constants.js +6 -0
  26. package/src/maps/model/export-image.js +4 -4
  27. package/src/maps/model/export-pdf.js +4 -4
  28. package/src/maps/model/interface.d.ts +15 -0
  29. package/src/maps/model/print.js +2 -2
  30. package/src/maps/model/theme.js +72 -0
  31. package/src/maps/user-interaction/tooltip.js +3 -1
  32. package/src/maps/user-interaction/zoom.d.ts +13 -1
  33. package/src/maps/user-interaction/zoom.js +139 -91
  34. package/src/maps/utils/enum.d.ts +4 -0
  35. package/src/maps/utils/helper.d.ts +4 -9
  36. package/src/maps/utils/helper.js +102 -46
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 27.1.56
4
- * Copyright Syncfusion Inc. 2001 - 2023. All rights reserved.
3
+ * version : 28.1.33
4
+ * Copyright Syncfusion Inc. 2001 - 2024. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
7
7
  * licensing@syncfusion.com. Any infringement will be prosecuted under
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "_from": "@syncfusion/ej2-maps@*",
3
- "_id": "@syncfusion/ej2-maps@27.1.48",
3
+ "_id": "@syncfusion/ej2-maps@16.42.7",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-e/uUcXQfFkZoImZBrS5GO/Yudgwwm7IPwdp8tDxRSmTa9GjxVkwzkmu7ueYobIiS6za7pX0L/66LpgWAbeO5wQ==",
5
+ "_integrity": "sha512-hYdA8I18QpGdTInSRH3iZ3hdp6/U1dkGLMq7yFsKaEDDvCyl5rvajihb+XaUX1VmW8+eWdgjbI5rPTTfO219RQ==",
6
6
  "_location": "/@syncfusion/ej2-maps",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -23,10 +23,10 @@
23
23
  "/@syncfusion/ej2-react-maps",
24
24
  "/@syncfusion/ej2-vue-maps"
25
25
  ],
26
- "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-maps/-/ej2-maps-27.1.48.tgz",
27
- "_shasum": "f1ba5d11b3af1626d8a508fa8685b5d9f0869264",
26
+ "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-release/@syncfusion/ej2-maps/-/ej2-maps-16.42.7.tgz",
27
+ "_shasum": "36fc1e11aef49f674a3f00eeaa4618bd0aad2a95",
28
28
  "_spec": "@syncfusion/ej2-maps@*",
29
- "_where": "/jenkins/workspace/elease-automation_release_27.1.1/packages/included",
29
+ "_where": "/jenkins/workspace/elease-automation_release_28.1.1/packages/included",
30
30
  "author": {
31
31
  "name": "Syncfusion Inc."
32
32
  },
@@ -35,13 +35,13 @@
35
35
  },
36
36
  "bundleDependencies": false,
37
37
  "dependencies": {
38
- "@syncfusion/ej2-base": "~27.1.55",
39
- "@syncfusion/ej2-buttons": "~27.1.53",
40
- "@syncfusion/ej2-compression": "~27.1.53",
41
- "@syncfusion/ej2-data": "~27.1.52",
42
- "@syncfusion/ej2-file-utils": "~27.1.53",
43
- "@syncfusion/ej2-pdf-export": "~27.1.51",
44
- "@syncfusion/ej2-svg-base": "~27.1.50"
38
+ "@syncfusion/ej2-base": "~28.1.33",
39
+ "@syncfusion/ej2-buttons": "~28.1.33",
40
+ "@syncfusion/ej2-compression": "~28.1.33",
41
+ "@syncfusion/ej2-data": "~28.1.33",
42
+ "@syncfusion/ej2-file-utils": "~28.1.33",
43
+ "@syncfusion/ej2-pdf-export": "~28.1.33",
44
+ "@syncfusion/ej2-svg-base": "~28.1.33"
45
45
  },
46
46
  "deprecated": false,
47
47
  "description": "The Maps component is used to visualize the geographical data and represent the statistical data of a particular geographical area on earth with user interactivity, and provides various customizing options",
@@ -93,6 +93,6 @@
93
93
  "url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
94
94
  },
95
95
  "typings": "index.d.ts",
96
- "version": "27.1.56",
96
+ "version": "28.1.33",
97
97
  "sideEffects": false
98
98
  }
@@ -126,7 +126,7 @@ export declare class Legend {
126
126
  removeLegendHighlightCollection(): void;
127
127
  removeLegendSelectionCollection(targetElement: Element): void;
128
128
  removeShapeHighlightCollection(): void;
129
- shapeHighLightAndSelection(targetElement: Element, data: object, module: SelectionSettingsModel | HighlightSettingsModel, getValue: string, layerIndex: number): void;
129
+ shapeHighLightAndSelection(targetElement: Element, data: object, legendModule: SelectionSettingsModel | HighlightSettingsModel, getValue: string, layerIndex: number): void;
130
130
  private isTargetSelected;
131
131
  private updateLegendElement;
132
132
  private getIndexofLegend;
@@ -200,6 +200,13 @@ var Legend = /** @class */ (function () {
200
200
  else {
201
201
  legendText = '';
202
202
  }
203
+ if (legend.position === 'Left' || legend.position === 'Right') {
204
+ for (var i_1 = 0; i_1 < this.legendCollection.length; i_1++) {
205
+ var legendItem = this.legendCollection[i_1];
206
+ var legendTextSize = measureText(legendItem['text'], legend.textStyle);
207
+ this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);
208
+ }
209
+ }
203
210
  maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);
204
211
  maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);
205
212
  if (itemTextSize.width > 0 && itemTextSize.height > 0) {
@@ -209,26 +216,26 @@ var Legend = /** @class */ (function () {
209
216
  (startY - textPadding_1);
210
217
  }
211
218
  else {
212
- textX_1 = (position_1 === 'After') ? startX - (itemTextSize.width / 2) - textPadding_1
213
- : (startX + rectWidth + itemTextSize.width / 2) + textPadding_1;
219
+ textX_1 = (position_1 === 'After') ? startX - (this.textMaxWidth / 2) - textPadding_1
220
+ : (startX + rectWidth + this.textMaxWidth / 2) + textPadding_1;
214
221
  textY_1 = startY + (rectHeight / 2) + (itemTextSize.height / 4);
215
222
  }
216
223
  }
217
224
  if (i === 0) {
218
225
  itemStartX = (arrangement === 'Horizontal') ? startX : (position_1 === 'After') ?
219
- textX_1 - (itemTextSize.width / 2) : startX;
226
+ textX_1 - (this.textMaxWidth / 2) : startX;
220
227
  itemStartY = (arrangement === 'Horizontal') ? (position_1 === 'After') ? startY :
221
228
  textY_1 - (itemTextSize.height / 2) : startY;
222
229
  if (this.legendCollection.length === 1) {
223
230
  legendWidth = (arrangement === 'Horizontal') ? Math.abs((startX + rectWidth) - itemStartX) :
224
- (rectWidth + maxTextWidth + textPadding_1);
231
+ (rectWidth + this.textMaxWidth + textPadding_1);
225
232
  legendHeight = (arrangement === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding_1) :
226
233
  Math.abs((startY + rectHeight) - itemStartY);
227
234
  }
228
235
  }
229
236
  else if (i === this.legendCollection.length - 1) {
230
237
  legendWidth = (arrangement === 'Horizontal') ? Math.abs((startX + rectWidth) - itemStartX) :
231
- (rectWidth + maxTextWidth + textPadding_1);
238
+ (rectWidth + this.textMaxWidth + textPadding_1);
232
239
  legendHeight = (arrangement === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding_1) :
233
240
  Math.abs((startY + rectHeight) - itemStartY);
234
241
  }
@@ -240,8 +247,8 @@ var Legend = /** @class */ (function () {
240
247
  shapeBorder: this.legendCollection[i]['shapeBorder']
241
248
  });
242
249
  }
243
- if (this.legendCollection.length === 1 && !(map.theme === 'Fluent2HighContrast' && legend.position === 'Bottom')) {
244
- legendHeight = rectHeight;
250
+ if (this.legendCollection.length === 1) {
251
+ legendHeight = maxTextHeight + textPadding_1;
245
252
  legendWidth = rectWidth;
246
253
  }
247
254
  this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };
@@ -724,13 +731,13 @@ var Legend = /** @class */ (function () {
724
731
  && idIndex_1 === i) {
725
732
  var layer = this.maps.layers[collection[i]['data'][0]['layerIndex']];
726
733
  var enable = void 0;
727
- var module = void 0;
734
+ var legendModule = void 0;
728
735
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
729
736
  var data = void 0;
730
737
  if (!isNullOrUndefined(layer)) {
731
738
  enable = (value === 'selection') ? layer.selectionSettings.enable : layer.highlightSettings.enable;
732
- module = void 0;
733
- module = (value === 'selection') ? layer.selectionSettings : layer.highlightSettings;
739
+ legendModule = void 0;
740
+ legendModule = (value === 'selection') ? layer.selectionSettings : layer.highlightSettings;
734
741
  data = collection[i]['data'];
735
742
  }
736
743
  if (enable) {
@@ -751,8 +758,8 @@ var Legend = /** @class */ (function () {
751
758
  if (shapeElement !== null) {
752
759
  var shapeMatch = true;
753
760
  if (this.maps.legendSelectionCollection !== null) {
754
- for (var i_1 = 0; i_1 < this.maps.legendSelectionCollection.length; i_1++) {
755
- if (this.maps.legendSelectionCollection[i_1]['legendElement'] === targetElement) {
761
+ for (var i_2 = 0; i_2 < this.maps.legendSelectionCollection.length; i_2++) {
762
+ if (this.maps.legendSelectionCollection[i_2]['legendElement'] === targetElement) {
756
763
  shapeMatch = false;
757
764
  break;
758
765
  }
@@ -774,12 +781,12 @@ var Legend = /** @class */ (function () {
774
781
  var shapeOldColor = this.legendHighlightCollection[length - 1]['shapeOldFillColor'][shapeItemCount];
775
782
  var shapeOldFillOpacity = this.legendHighlightCollection[length - 1]['shapeOldOpacity'];
776
783
  this.shapePreviousColor = this.legendHighlightCollection[length - 1]['shapeOldFillColor'];
777
- this.setColor(shapeElement, !isNullOrUndefined(module.fill) ? module.fill : shapeOldColor, isNullOrUndefined(module.opacity) ? shapeOldFillOpacity : module.opacity.toString(), module.border.color, module.border.width.toString(), 'highlight');
778
- this.setColor(targetElement, !isNullOrUndefined(module.fill) ? module.fill : legendHighlightColor, isNullOrUndefined(module.opacity) ? shapeOldFillOpacity : module.opacity.toString(), module.border.color, module.border.width.toString(), 'highlight');
784
+ this.setColor(shapeElement, !isNullOrUndefined(legendModule.fill) ? legendModule.fill : shapeOldColor, isNullOrUndefined(legendModule.opacity) ? shapeOldFillOpacity : legendModule.opacity.toString(), legendModule.border.color, legendModule.border.width.toString(), 'highlight');
785
+ this.setColor(targetElement, !isNullOrUndefined(legendModule.fill) ? legendModule.fill : legendHighlightColor, isNullOrUndefined(legendModule.opacity) ? shapeOldFillOpacity : legendModule.opacity.toString(), legendModule.border.color, legendModule.border.width.toString(), 'highlight');
779
786
  }
780
787
  else if (value === 'selection') {
781
788
  this.legendHighlightCollection = [];
782
- this.maps.legendSelectionClass = module;
789
+ this.maps.legendSelectionClass = legendModule;
783
790
  if (j === 0) {
784
791
  this.pushCollection(targetElement, this.maps.legendSelectionCollection, collection[i], layer.shapeSettings);
785
792
  if (multiSelectEnable) {
@@ -799,8 +806,8 @@ var Legend = /** @class */ (function () {
799
806
  var legendSelectionColor = this.maps.legendSelectionCollection[selectLength - 1]['legendOldFill'];
800
807
  this.maps.legendSelectionCollection[selectLength - 1]['MapShapeCollection']['Elements'].push(shapeElement);
801
808
  this.maps.legendSelectionCollection[selectLength - 1]['shapeOldFillColor'] = this.shapePreviousColor;
802
- this.setColor(targetElement, !isNullOrUndefined(module.fill) ? module.fill : legendSelectionColor, module.opacity.toString(), module.border.color, module.border.width.toString(), 'selection');
803
- this.setColor(shapeElement, !isNullOrUndefined(module.fill) ? module.fill : legendSelectionColor, module.opacity.toString(), module.border.color, module.border.width.toString(), 'selection');
809
+ this.setColor(targetElement, !isNullOrUndefined(legendModule.fill) ? legendModule.fill : legendSelectionColor, legendModule.opacity.toString(), legendModule.border.color, legendModule.border.width.toString(), 'selection');
810
+ this.setColor(shapeElement, !isNullOrUndefined(legendModule.fill) ? legendModule.fill : legendSelectionColor, legendModule.opacity.toString(), legendModule.border.color, legendModule.border.width.toString(), 'selection');
804
811
  if (this.maps.selectedElementId.indexOf(shapeElement.getAttribute('id')) === -1) {
805
812
  this.maps.selectedElementId.push(shapeElement.getAttribute('id'));
806
813
  }
@@ -898,7 +905,7 @@ var Legend = /** @class */ (function () {
898
905
  }
899
906
  }
900
907
  };
901
- Legend.prototype.shapeHighLightAndSelection = function (targetElement, data, module, getValue, layerIndex) {
908
+ Legend.prototype.shapeHighLightAndSelection = function (targetElement, data, legendModule, getValue, layerIndex) {
902
909
  if (data !== undefined) {
903
910
  this.updateLegendElement();
904
911
  this.shapeToggled = true;
@@ -944,7 +951,7 @@ var Legend = /** @class */ (function () {
944
951
  var selectionIndex = this.maps.selectedLegendElementId.indexOf(indexes['actualIndex']);
945
952
  if (selectionIndex === -1) {
946
953
  this.maps.selectedLegendElementId.push(indexes['actualIndex']);
947
- this.maps.legendSelectionClass = module;
954
+ this.maps.legendSelectionClass = legendModule;
948
955
  }
949
956
  else {
950
957
  if ((checkSelection <= 1) && (targetElement.getAttribute('class') === 'ShapeselectionMapStyle'
@@ -1010,13 +1017,13 @@ var Legend = /** @class */ (function () {
1010
1017
  }
1011
1018
  else if (j === length_1 - 1) {
1012
1019
  this.removeShapeHighlightCollection();
1013
- this.setColor(legendShape, !isNullOrUndefined(module.fill) ? module.fill : legendShape.getAttribute('fill'), module.opacity.toString(), module.border.color, module.border.width.toString(), 'highlight');
1020
+ this.setColor(legendShape, !isNullOrUndefined(legendModule.fill) ? legendModule.fill : legendShape.getAttribute('fill'), legendModule.opacity.toString(), legendModule.border.color, legendModule.border.width.toString(), 'highlight');
1014
1021
  }
1015
1022
  }
1016
1023
  }
1017
1024
  else {
1018
1025
  this.removeShapeHighlightCollection();
1019
- this.setColor(legendShape, !isNullOrUndefined(module.fill) ? module.fill : legendShape.getAttribute('fill'), !isNullOrUndefined(module.opacity) ? module.opacity.toString() : '1', module.border.color, module.border.width.toString(), 'highlight');
1026
+ this.setColor(legendShape, !isNullOrUndefined(legendModule.fill) ? legendModule.fill : legendShape.getAttribute('fill'), !isNullOrUndefined(legendModule.opacity) ? legendModule.opacity.toString() : '1', legendModule.border.color, legendModule.border.width.toString(), 'highlight');
1020
1027
  }
1021
1028
  }
1022
1029
  else if (getValue === 'selection') {
@@ -1026,7 +1033,7 @@ var Legend = /** @class */ (function () {
1026
1033
  var j = 0;
1027
1034
  while (j < this.maps.legendSelectionCollection.length) {
1028
1035
  if (shapeElement['LegendEle'] !== this.maps.legendSelectionCollection[j]['legendElement'] &&
1029
- !module.enableMultiSelect) {
1036
+ !legendModule.enableMultiSelect) {
1030
1037
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1031
1038
  var element = this.maps.legendSelectionCollection[j];
1032
1039
  var selectedLegendIndex = this.maps.selectedLegendElementId.indexOf(indexes['actualIndex']);
@@ -1044,14 +1051,14 @@ var Legend = /** @class */ (function () {
1044
1051
  if (selectionEle && (selectionEle['IsSelected'] && (targetElement.getAttribute('class') === 'ShapeselectionMapStyle'
1045
1052
  || targetElement.getAttribute('class') === 'LineselectionMapStyle'))) {
1046
1053
  var multiSelection = 0;
1047
- if (module.enableMultiSelect) {
1054
+ if (legendModule.enableMultiSelect) {
1048
1055
  for (var i = 0; i < shapeElement['Elements'].length; i++) {
1049
1056
  if (targetElement.getAttribute('class') === shapeElement['Elements'][i].getAttribute('class')) {
1050
1057
  multiSelection++;
1051
1058
  }
1052
1059
  }
1053
1060
  }
1054
- if (multiSelection <= 1 && (!module.enableMultiSelect ?
1061
+ if (multiSelection <= 1 && (!legendModule.enableMultiSelect ?
1055
1062
  this.maps.legendSelection : true)) {
1056
1063
  this.maps.selectedLegendElementId.splice(this.maps.selectedLegendElementId.indexOf(indexes['actualIndex']), 1);
1057
1064
  if (!isNullOrUndefined(shapeElement['LegendEle'])) {
@@ -1078,10 +1085,10 @@ var Legend = /** @class */ (function () {
1078
1085
  if (addId) {
1079
1086
  this.maps.selectedLegendElementId.push(indexes['actualIndex']);
1080
1087
  }
1081
- this.maps.legendSelectionClass = module;
1088
+ this.maps.legendSelectionClass = legendModule;
1082
1089
  this.removeLegend(this.shapeHighlightCollection);
1083
1090
  if (!isNullOrUndefined(legendShape)) {
1084
- this.setColor(legendShape, !isNullOrUndefined(module.fill) ? module.fill : legendShape.getAttribute('fill'), !isNullOrUndefined(module.opacity) ? module.opacity.toString() : '1', module.border.color, module.border.width.toString(), 'selection');
1091
+ this.setColor(legendShape, !isNullOrUndefined(legendModule.fill) ? legendModule.fill : legendShape.getAttribute('fill'), !isNullOrUndefined(legendModule.opacity) ? legendModule.opacity.toString() : '1', legendModule.border.color, legendModule.border.width.toString(), 'selection');
1085
1092
  var legendSelectionIndex = this.getIndexofLegend(this.maps.legendSelectionCollection, legendShape);
1086
1093
  this.maps.legendSelectionCollection[legendSelectionIndex]['MapShapeCollection']['Elements'].push(targetElement);
1087
1094
  }
@@ -1308,18 +1315,7 @@ var Legend = /** @class */ (function () {
1308
1315
  var spacing = 10;
1309
1316
  var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);
1310
1317
  var textSize = measureText(trimTitle, textStyle);
1311
- var sameTextWidth = false;
1312
- for (var i = 0; i < this.legendRenderingCollections.length; i++) {
1313
- if (this.legendRenderingCollections[i].textWidth !== this.legendRenderingCollections[0].textWidth) {
1314
- sameTextWidth = false;
1315
- break;
1316
- }
1317
- else {
1318
- sameTextWidth = true;
1319
- }
1320
- }
1321
- this.legendBorderRect = new Rect((map.theme === 'Fluent2HighContrast' && !sameTextWidth && (legend.position === 'Left' || legend.position === 'Right') && legend.mode === 'Interactive')
1322
- ? (this.legendItemRect.x - (spacing * 3)) : (this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +
1318
+ this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +
1323
1319
  (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));
1324
1320
  var legendBorder = {
1325
1321
  color: legend.border.color || this.maps.themeStyle.legendBorderColor, opacity: legend.border.opacity,
@@ -2252,6 +2248,12 @@ var Legend = /** @class */ (function () {
2252
2248
  this.maps.off(Browser.touchMoveEvent, this.interactiveHandler);
2253
2249
  this.maps.off(Browser.touchEndEvent, this.interactiveHandler);
2254
2250
  this.maps.off(click, this.legendClick);
2251
+ var pagingElement = document.getElementById(this.maps.element.id + '_Legend_Paging_Group');
2252
+ if (pagingElement) {
2253
+ for (var i = 0; i < pagingElement.childElementCount; i++) {
2254
+ EventHandler.remove(pagingElement.childNodes[i], Browser.touchStartEvent, this.changeNextPage);
2255
+ }
2256
+ }
2255
2257
  };
2256
2258
  Legend.prototype.getLegendData = function (
2257
2259
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -6,7 +6,6 @@ import { LayerSettings, MarkerClusterData } from '../index';
6
6
  export declare class Marker {
7
7
  private maps;
8
8
  private isMarkerExplode;
9
- private trackElements;
10
9
  private markerSVGObject;
11
10
  initialMarkerCluster: number[][][];
12
11
  zoomedMarkerCluster: number[][][];
@@ -77,6 +76,14 @@ export declare class Marker {
77
76
  * @private
78
77
  */
79
78
  markerClusterMouseMove(e: PointerEvent): void;
79
+ /**
80
+ * This method is used to return whether the clustering is enabled in any marker settings.
81
+ *
82
+ * @param {LayerSettings} layer - Specifies the layer settings
83
+ * @returns {boolean} - Specifies whether the clustering is enabled in any marker settings.
84
+ * @private
85
+ */
86
+ allowInnerClusterSetting(layer: LayerSettings): boolean;
80
87
  /**
81
88
  * @private
82
89
  * @returns {void}
@@ -9,7 +9,6 @@ import { getElementByID, mergeSeparateCluster, clusterSeparate, removeElement, g
9
9
  var Marker = /** @class */ (function () {
10
10
  function Marker(maps) {
11
11
  this.maps = maps;
12
- this.trackElements = [];
13
12
  this.sameMarkerData = [];
14
13
  this.initialMarkerCluster = [];
15
14
  this.zoomedMarkerCluster = [];
@@ -27,23 +26,43 @@ var Marker = /** @class */ (function () {
27
26
  var templateFn;
28
27
  var markerCount = 0;
29
28
  var nullCount = 0;
29
+ var isMarkerTemplateNewCreation = false;
30
30
  var markerTemplateCount = 0;
31
31
  maps.translateType = 'marker';
32
32
  var currentLayer = maps.layersCollection[layerIndex];
33
- this.markerSVGObject = maps.renderer.createGroup({
34
- id: maps.element.id + '_Markers_Group',
35
- class: 'GroupElement'
36
- });
33
+ var markerElement = layerElement.querySelectorAll('#' + maps.element.id + '_Markers_Group');
34
+ if (markerElement.length > 0) {
35
+ this.markerSVGObject = markerElement[0];
36
+ this.markerSVGObject.innerHTML = '';
37
+ isMarkerTemplateNewCreation = true;
38
+ }
39
+ else {
40
+ this.markerSVGObject = maps.renderer.createGroup({
41
+ id: maps.element.id + '_Markers_Group',
42
+ class: 'GroupElement'
43
+ });
44
+ }
37
45
  this.markerSVGObject.style.pointerEvents = 'auto';
38
- var markerTemplateEle = createElement('div', {
39
- id: maps.element.id + '_LayerIndex_' + layerIndex + '_Markers_Template_Group',
40
- className: maps.element.id + '_template'
41
- });
42
- markerTemplateEle.style.cssText = 'overflow: hidden; position: absolute;pointer-events: none;' +
43
- 'top:' + maps.mapAreaRect.y + 'px;' +
44
- 'left:' + maps.mapAreaRect.x + 'px;' +
45
- 'height:' + maps.mapAreaRect.height + 'px;' +
46
- 'width:' + maps.mapAreaRect.width + 'px;';
46
+ var secondaryElement = getElementByID(maps.element.id + '_Secondary_Element');
47
+ var markerTemplateElement = secondaryElement.querySelectorAll('#' + maps.element.id + '_LayerIndex_' + layerIndex + '_Markers_Template_Group');
48
+ var markerTemplateEle;
49
+ if (markerTemplateElement && markerTemplateElement.length > 0 && markerTemplateElement[0].childElementCount > 0) {
50
+ markerTemplateEle = getElementByID(maps.element.id + '_LayerIndex_' + layerIndex + '_Markers_Template_Group');
51
+ markerTemplateEle.innerHTML = '';
52
+ isMarkerTemplateNewCreation = true;
53
+ }
54
+ else {
55
+ markerTemplateEle = createElement('div', {
56
+ id: maps.element.id + '_LayerIndex_' + layerIndex + '_Markers_Template_Group',
57
+ className: maps.element.id + '_template'
58
+ });
59
+ markerTemplateEle.style.cssText = 'overflow: hidden; position: absolute;pointer-events: none;' +
60
+ 'top:' + maps.mapAreaRect.y + 'px;' +
61
+ 'left:' + maps.mapAreaRect.x + 'px;' +
62
+ 'height:' + maps.mapAreaRect.height + 'px;' +
63
+ 'width:' + maps.mapAreaRect.width + 'px;';
64
+ }
65
+ var allowInnerClusterSetting = this.allowInnerClusterSetting(currentLayer);
47
66
  var allowAnimation = (currentLayer.animationDuration !== 0 || animationMode === 'Enable') || isNullOrUndefined(maps.zoomModule);
48
67
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
68
  var translatePoint;
@@ -55,13 +74,20 @@ var Marker = /** @class */ (function () {
55
74
  Array.prototype.forEach.call(currentLayer.markerSettings, function (markerSettings, markerIndex) {
56
75
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
76
  var markerData = markerSettings.dataSource;
77
+ markerCount = 0;
58
78
  if (!isNullOrUndefined(markerSettings.dataSource)) {
59
79
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
80
  Array.prototype.forEach.call(markerData, function (data, dataIndex) {
61
81
  maps.markerNullCount = markerIndex > 0 && dataIndex === 0 ? 0 : maps.markerNullCount;
62
82
  var eventArgs = {
63
- cancel: false, name: markerRendering, fill: markerSettings.fill, height: markerSettings.height,
64
- width: markerSettings.width, imageUrl: markerSettings.imageUrl, shape: markerSettings.shape,
83
+ cancel: false, name: markerRendering, fill: markerSettings.fill,
84
+ height: (!isNullOrUndefined(markerSettings.heightValuePath) &&
85
+ !isNullOrUndefined(data[markerSettings.heightValuePath]) ?
86
+ data[markerSettings.heightValuePath] : markerSettings.height),
87
+ width: (!isNullOrUndefined(markerSettings.widthValuePath) &&
88
+ !isNullOrUndefined(data[markerSettings.widthValuePath]) ?
89
+ data[markerSettings.widthValuePath] : markerSettings.width),
90
+ imageUrl: markerSettings.imageUrl, shape: markerSettings.shape,
65
91
  template: markerSettings.template, data: data, maps: maps, marker: markerSettings,
66
92
  border: markerSettings.border, colorValuePath: markerSettings.colorValuePath,
67
93
  shapeValuePath: markerSettings.shapeValuePath, imageUrlValuePath: markerSettings.imageUrlValuePath
@@ -87,12 +113,14 @@ var Marker = /** @class */ (function () {
87
113
  var scale = type === 'AddMarker' ? maps.scale : translatePoint['scale'];
88
114
  var transPoint = type === 'AddMarker' ? maps.translatePoint : translatePoint['location'];
89
115
  if (eventArgs.template && (!isNaN(location_1.x) && !isNaN(location_1.y))) {
116
+ isMarkerTemplateNewCreation = false;
90
117
  markerTemplateCount++;
91
118
  markerTemplate(eventArgs, templateFn, markerID, data, markerIndex, markerTemplateEle, location_1, transPoint, scale, offset, maps);
92
119
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
93
120
  maps.renderReactTemplates();
94
121
  }
95
122
  else if (!eventArgs.template && (!isNaN(location_1.x) && !isNaN(location_1.y))) {
123
+ isMarkerTemplateNewCreation = true;
96
124
  markerCount++;
97
125
  marker(eventArgs, markerSettings, markerData, dataIndex, location_1, transPoint, markerID, offset, scale, maps, _this.markerSVGObject);
98
126
  }
@@ -104,32 +132,55 @@ var Marker = /** @class */ (function () {
104
132
  maps.markerNullCount + 1 : maps.markerNullCount;
105
133
  var markerDataLength = markerData.length - maps.markerNullCount;
106
134
  var isMarkersClustered = false;
107
- if (_this.markerSVGObject.childElementCount === (markerDataLength - markerTemplateCount - nullCount) && (type !== 'Template')) {
108
- layerElement.appendChild(_this.markerSVGObject);
109
- if (currentLayer.markerClusterSettings.allowClustering) {
110
- maps.svgObject.appendChild(_this.markerSVGObject);
111
- maps.element.appendChild(maps.svgObject);
135
+ var markerGroup = (markerSettings.clusterSettings.allowClustering ||
136
+ (currentLayer.markerClusterSettings.allowClustering && currentLayer.markerSettings.length > 1))
137
+ ? _this.markerSVGObject.querySelectorAll("[id*='LayerIndex_" + layerIndex + "_MarkerIndex_" + markerIndex + "']:not([id*='_Group'])")
138
+ : _this.markerSVGObject.childNodes;
139
+ var templateCount = _this.markerSVGObject.childNodes === markerGroup ? markerTemplateCount : 0;
140
+ if (markerGroup.length === (markerDataLength - templateCount - nullCount) && (type !== 'Template')) {
141
+ if (markerElement.length === 0) {
142
+ layerElement.appendChild(_this.markerSVGObject);
143
+ }
144
+ if (markerSettings.clusterSettings.allowClustering || !allowInnerClusterSetting &&
145
+ currentLayer.markerClusterSettings.allowClustering) {
146
+ if (markerElement.length === 0) {
147
+ maps.svgObject.appendChild(_this.markerSVGObject);
148
+ maps.element.appendChild(maps.svgObject);
149
+ }
112
150
  if ((currentLayer.urlTemplate.indexOf('openstreetmap') !== -1 && isNullOrUndefined(currentLayer.shapeData))
113
151
  && maps.zoomSettings.enable) {
114
- isMarkersClustered = clusterTemplate(currentLayer, _this.markerSVGObject, maps, layerIndex, _this.markerSVGObject, layerElement, true, false);
115
- layerElement.appendChild(_this.markerSVGObject);
152
+ isMarkersClustered = clusterTemplate(currentLayer, _this.markerSVGObject, maps, layerIndex, markerIndex, _this.markerSVGObject, layerElement, true, false, null, allowInnerClusterSetting);
153
+ if (markerElement.length === 0) {
154
+ layerElement.appendChild(_this.markerSVGObject);
155
+ }
116
156
  }
117
157
  else {
118
- isMarkersClustered = clusterTemplate(currentLayer, _this.markerSVGObject, maps, layerIndex, _this.markerSVGObject, layerElement, true, false);
158
+ isMarkersClustered = clusterTemplate(currentLayer, _this.markerSVGObject, maps, layerIndex, markerIndex, _this.markerSVGObject, layerElement, true, false, translatePoint, allowInnerClusterSetting);
119
159
  }
120
160
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
161
  maps.renderReactTemplates();
122
162
  }
123
163
  }
124
- if (markerTemplateEle.childElementCount === (markerDataLength - markerCount - nullCount) && getElementByID(maps.element.id + '_Secondary_Element')) {
125
- getElementByID(maps.element.id + '_Secondary_Element').appendChild(markerTemplateEle);
164
+ var markerTemplateGroup = (markerSettings.clusterSettings.allowClustering ||
165
+ (currentLayer.markerClusterSettings.allowClustering && currentLayer.markerSettings.length > 1))
166
+ ? markerTemplateEle.querySelectorAll("[id*='LayerIndex_" + layerIndex + "_MarkerIndex_" + markerIndex + "']:not([id*='_Group'])")
167
+ : markerTemplateEle.childNodes;
168
+ if (markerTemplateGroup.length === (markerDataLength - markerCount - nullCount) && getElementByID(maps.element.id + '_Secondary_Element')) {
169
+ if (!isMarkerTemplateNewCreation) {
170
+ getElementByID(maps.element.id + '_Secondary_Element').appendChild(markerTemplateEle);
171
+ }
126
172
  if (maps.checkInitialRender) {
127
- if (currentLayer.markerClusterSettings.allowClustering && !isMarkersClustered) {
128
- clusterTemplate(currentLayer, markerTemplateEle, maps, layerIndex, _this.markerSVGObject, layerElement, false, false);
173
+ if ((markerSettings.clusterSettings.allowClustering || !allowInnerClusterSetting &&
174
+ currentLayer.markerClusterSettings.allowClustering) && !isMarkersClustered) {
175
+ clusterTemplate(currentLayer, markerTemplateEle, maps, layerIndex, markerIndex, _this.markerSVGObject, layerElement, false, false, translatePoint, allowInnerClusterSetting);
129
176
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
130
177
  maps.renderReactTemplates();
131
178
  }
132
179
  }
180
+ if (currentLayer.markerClusterSettings.allowClustering && markerElement.length > 0) {
181
+ var layerCollectionEle = getElementByID(maps.element.id + '_Layer_Collections');
182
+ layerCollectionEle.appendChild(layerElement);
183
+ }
133
184
  }
134
185
  });
135
186
  });
@@ -410,16 +461,18 @@ var Marker = /** @class */ (function () {
410
461
  var markCollection = [];
411
462
  var clusterCollection = [];
412
463
  var marker;
413
- this.maps.markerClusterExpand = layer.markerClusterSettings.allowClusterExpand;
414
464
  if (target.indexOf('_MarkerIndex_') > -1) {
415
465
  var markerIndex = parseInt(id[1].split('_MarkerIndex_')[1].split('_')[0], 10);
416
466
  var dataIndex = parseInt(id[1].split('_dataIndex_')[1].split('_')[0], 10);
417
467
  marker = layer.markerSettings[markerIndex];
468
+ var allowInnerClusterSetting = this.allowInnerClusterSetting(layer);
469
+ this.maps.markerClusterExpand = !allowInnerClusterSetting && layer.markerClusterSettings.allowClustering ?
470
+ layer.markerClusterSettings.allowClusterExpand : marker.clusterSettings.allowClusterExpand;
418
471
  if (!isNaN(markerIndex)) {
419
472
  data = marker.dataSource[dataIndex];
420
473
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
421
474
  var collection_1 = [];
422
- if (!marker.template && (target.indexOf('_cluster_') > -1) && (this.maps.layers[index].markerClusterSettings.allowClusterExpand)) {
475
+ if (!marker.template && (target.indexOf('_cluster_') > -1) && this.maps.markerClusterExpand) {
423
476
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
424
477
  Array.prototype.forEach.call(marker.dataSource, function (location, index) {
425
478
  if (location['latitude'] === data['latitude'] && location['longitude'] === data['longitude']) {
@@ -429,8 +482,10 @@ var Marker = /** @class */ (function () {
429
482
  }
430
483
  if ((target.indexOf('_cluster_') > -1)) {
431
484
  var isClusterSame = false;
432
- var clusterElement = document.getElementById(target.indexOf('_datalabel_') > -1 ? layer.markerClusterSettings.shape === 'Balloon' ? target.split('_datalabel_')[0] + '_Group' : target.split('_datalabel_')[0] : layer.markerClusterSettings.shape === 'Balloon' ? target + '_Group' : target);
433
- var indexes = layer.markerClusterSettings.shape === 'Balloon' ? clusterElement.children[0].textContent.split(',').map(Number) : clusterElement.textContent.split(',').map(Number);
485
+ var cluster = !allowInnerClusterSetting && layer.markerClusterSettings.allowClustering ?
486
+ layer.markerClusterSettings : layer.markerSettings[markerIndex].clusterSettings;
487
+ var clusterElement = document.getElementById(target.indexOf('_datalabel_') > -1 ? cluster.shape === 'Balloon' ? target.split('_datalabel_')[0] + '_Group' : target.split('_datalabel_')[0] : cluster.shape === 'Balloon' ? target + '_Group' : target);
488
+ var indexes = cluster.shape === 'Balloon' ? clusterElement.children[0].textContent.split(',').map(Number) : clusterElement.textContent.split(',').map(Number);
434
489
  collection_1 = [];
435
490
  for (var _i = 0, indexes_1 = indexes; _i < indexes_1.length; _i++) {
436
491
  var i = indexes_1[_i];
@@ -500,6 +555,23 @@ var Marker = /** @class */ (function () {
500
555
  };
501
556
  this.maps.trigger(markerClusterMouseMove, eventArgs);
502
557
  };
558
+ /**
559
+ * This method is used to return whether the clustering is enabled in any marker settings.
560
+ *
561
+ * @param {LayerSettings} layer - Specifies the layer settings
562
+ * @returns {boolean} - Specifies whether the clustering is enabled in any marker settings.
563
+ * @private
564
+ */
565
+ Marker.prototype.allowInnerClusterSetting = function (layer) {
566
+ var allowInnerClusterSetting = false;
567
+ for (var markerIndex = 0; markerIndex < layer.markerSettings.length; markerIndex++) {
568
+ if (layer.markerSettings[markerIndex].clusterSettings.allowClustering) {
569
+ allowInnerClusterSetting = true;
570
+ break;
571
+ }
572
+ }
573
+ return allowInnerClusterSetting;
574
+ };
503
575
  /**
504
576
  * @private
505
577
  * @returns {void}
@@ -526,7 +598,6 @@ var Marker = /** @class */ (function () {
526
598
  */
527
599
  Marker.prototype.destroy = function () {
528
600
  this.maps = null;
529
- this.trackElements = [];
530
601
  this.markerSVGObject = null;
531
602
  this.sameMarkerData = [];
532
603
  this.initialMarkerCluster = [];
@@ -1,4 +1,4 @@
1
- import { Component, NotifyPropertyChanges, INotifyPropertyChanged, Property, Fetch } from '@syncfusion/ej2-base';import { EventHandler, Browser, EmitType, isNullOrUndefined, createElement, setValue, extend } from '@syncfusion/ej2-base';import { Event, remove, L10n, Collection, Internationalization, Complex } from '@syncfusion/ej2-base';import { ModuleDeclaration } from '@syncfusion/ej2-base';import { SvgRenderer } from '@syncfusion/ej2-svg-base';import { Size, createSvg, Point, removeElement, triggerShapeEvent, showTooltip, checkShapeDataFields, MapLocation, getMousePosition, calculateSize } from './utils/helper';import { getElement, removeClass, getTranslate, triggerItemSelectionEvent, mergeSeparateCluster, customizeStyle, querySelector } from './utils/helper';import { createStyle, getProcessedMarginValue } from './utils/helper';import { ZoomSettings, LegendSettings } from './model/base';import { LayerSettings, TitleSettings, Border, Margin, MapsAreaSettings, Annotation, CenterPosition } from './model/base';import { ZoomSettingsModel, LegendSettingsModel, LayerSettingsModel, BubbleSettingsModel, PolygonSettingsModel } from './model/base-model';import { MarkerSettingsModel, SelectionSettingsModel, InitialMarkerSelectionSettingsModel } from './model/base-model';import { TitleSettingsModel, BorderModel, MarginModel, CenterPositionModel, InitialShapeSelectionSettingsModel } from './model/base-model';import { MapsAreaSettingsModel, AnnotationModel } from './model/base-model';import { Bubble } from './layers/bubble';import { Legend } from './layers/legend';import { Marker } from './layers/marker';import { Highlight } from './user-interaction/highlight';import { Selection } from './user-interaction/selection';import { MapsTooltip } from './user-interaction/tooltip';import { Zoom } from './user-interaction/zoom';import { load, click, onclick, rightClick, doubleClick, resize, shapeSelected, zoomIn } from './model/constants';import { ProjectionType, MapsTheme, PanDirection, TooltipGesture } from './utils/enum';import { getThemeStyle, Theme } from './model/theme';import { ILoadEventArgs, ILoadedEventArgs, IMinMaxLatitudeLongitude, IMouseEventArgs, IResizeEventArgs, ITooltipRenderEventArgs } from './model/interface';import { GeoPosition, ITooltipRenderCompleteEventArgs, ILegendRenderingEventArgs } from './model/interface';import { ILayerRenderingEventArgs, IShapeRenderingEventArgs, IMarkerRenderingEventArgs, IMarkerClickEventArgs } from './model/interface';import { IMarkerMoveEventArgs, ILabelRenderingEventArgs, IBubbleMoveEventArgs, IBubbleClickEventArgs } from './model/interface';import { IMarkerClusterClickEventArgs, IMarkerClusterMoveEventArgs, IMarkerClusterRenderingEventArgs } from './model/interface';import { ISelectionEventArgs, IShapeSelectedEventArgs, IMapPanEventArgs, IMapZoomEventArgs } from './model/interface';import { IBubbleRenderingEventArgs, IAnimationCompleteEventArgs, IPrintEventArgs, IThemeStyle } from './model/interface';import { LayerPanel } from './layers/layer-panel';import { GeoLocation, Rect, RectOption, measureText, getElementByID, MapAjax, processResult, getElementsByClassName } from '../maps/utils/helper';import { findPosition, textTrim, TextOption, renderTextElement, calculateZoomLevel, convertTileLatLongToPoint, convertGeoToPoint} from '../maps/utils/helper';import { Annotations } from '../maps/user-interaction/annotation';import { FontModel, DataLabel, MarkerSettings, IAnnotationRenderingEventArgs, IMarkerDragEventArgs, BingMap } from './index';import { NavigationLineSettingsModel, changeBorderWidth } from './index';import { NavigationLine } from './layers/navigation-selected-line';import { Polygon } from './layers/polygon';import { DataManager, Query } from '@syncfusion/ej2-data';import { ExportType } from '../maps/utils/enum';import { PdfPageOrientation } from '@syncfusion/ej2-pdf-export';import { Print } from './model/print';import { PdfExport } from './model/export-pdf';import { ImageExport } from './model/export-image';
1
+ import { Component, NotifyPropertyChanges, INotifyPropertyChanged, Property, Fetch } from '@syncfusion/ej2-base';import { EventHandler, Browser, EmitType, isNullOrUndefined, createElement, setValue, extend } from '@syncfusion/ej2-base';import { Event, remove, L10n, Collection, Internationalization, Complex } from '@syncfusion/ej2-base';import { ModuleDeclaration } from '@syncfusion/ej2-base';import { SvgRenderer } from '@syncfusion/ej2-svg-base';import { Size, createSvg, Point, removeElement, triggerShapeEvent, showTooltip, checkShapeDataFields, MapLocation, getMousePosition, calculateSize } from './utils/helper';import { getElement, removeClass, getTranslate, triggerItemSelectionEvent, mergeSeparateCluster, customizeStyle, querySelector } from './utils/helper';import { createStyle, getProcessedMarginValue } from './utils/helper';import { ZoomSettings, LegendSettings } from './model/base';import { LayerSettings, TitleSettings, Border, Margin, MapsAreaSettings, Annotation, CenterPosition } from './model/base';import { ZoomSettingsModel, LegendSettingsModel, LayerSettingsModel, BubbleSettingsModel, PolygonSettingsModel } from './model/base-model';import { MarkerSettingsModel, SelectionSettingsModel, InitialMarkerSelectionSettingsModel } from './model/base-model';import { TitleSettingsModel, BorderModel, MarginModel, CenterPositionModel, InitialShapeSelectionSettingsModel } from './model/base-model';import { MapsAreaSettingsModel, AnnotationModel } from './model/base-model';import { Bubble } from './layers/bubble';import { Legend } from './layers/legend';import { Marker } from './layers/marker';import { Highlight } from './user-interaction/highlight';import { Selection } from './user-interaction/selection';import { MapsTooltip } from './user-interaction/tooltip';import { Zoom } from './user-interaction/zoom';import { load, click, onclick, rightClick, doubleClick, resize, shapeSelected, zoomIn, mouseMove } from './model/constants';import { ProjectionType, MapsTheme, PanDirection, TooltipGesture } from './utils/enum';import { getThemeStyle, Theme } from './model/theme';import { ILoadEventArgs, ILoadedEventArgs, IMinMaxLatitudeLongitude, IMouseEventArgs, IMouseMoveEventArgs, IResizeEventArgs, ITooltipRenderEventArgs } from './model/interface';import { GeoPosition, ITooltipRenderCompleteEventArgs, ILegendRenderingEventArgs } from './model/interface';import { ILayerRenderingEventArgs, IShapeRenderingEventArgs, IMarkerRenderingEventArgs, IMarkerClickEventArgs } from './model/interface';import { IMarkerMoveEventArgs, ILabelRenderingEventArgs, IBubbleMoveEventArgs, IBubbleClickEventArgs } from './model/interface';import { IMarkerClusterClickEventArgs, IMarkerClusterMoveEventArgs, IMarkerClusterRenderingEventArgs } from './model/interface';import { ISelectionEventArgs, IShapeSelectedEventArgs, IMapPanEventArgs, IMapZoomEventArgs } from './model/interface';import { IBubbleRenderingEventArgs, IAnimationCompleteEventArgs, IPrintEventArgs, IThemeStyle } from './model/interface';import { LayerPanel } from './layers/layer-panel';import { GeoLocation, Rect, RectOption, measureText, getElementByID, MapAjax, processResult, getElementsByClassName } from '../maps/utils/helper';import { findPosition, textTrim, TextOption, renderTextElement, calculateZoomLevel, convertTileLatLongToPoint, convertGeoToPoint} from '../maps/utils/helper';import { Annotations } from '../maps/user-interaction/annotation';import { FontModel, DataLabel, MarkerSettings, IAnnotationRenderingEventArgs, IMarkerDragEventArgs, BingMap } from './index';import { NavigationLineSettingsModel, changeBorderWidth } from './index';import { NavigationLine } from './layers/navigation-selected-line';import { Polygon } from './layers/polygon';import { DataManager, Query } from '@syncfusion/ej2-data';import { ExportType } from '../maps/utils/enum';import { PdfPageOrientation } from '@syncfusion/ej2-pdf-export';import { Print } from './model/print';import { PdfExport } from './model/export-pdf';import { ImageExport } from './model/export-image';
2
2
  import {ComponentModel} from '@syncfusion/ej2-base';
3
3
 
4
4
  /**
@@ -329,6 +329,13 @@ export interface MapsModel extends ComponentModel{
329
329
  */
330
330
  markerMouseMove?: EmitType<IMarkerMoveEventArgs>;
331
331
 
332
+ /**
333
+ * This event is triggered when the mouse pointer moves over the map.
334
+ *
335
+ * @event mouseMove
336
+ */
337
+ mouseMove?: EmitType<IMouseMoveEventArgs>;
338
+
332
339
  /**
333
340
  * Triggers before the data-label gets rendered.
334
341
  *