@syncfusion/ej2-maps 27.2.2 → 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.
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 27.2.2
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.56",
3
+ "_id": "@syncfusion/ej2-maps@16.42.7",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-IAVWYftjlNTABvcqvcz6R6CJR8eUhxcnZcTUpHBn3EXifrZwtk/Mf/tk6Xos2qLPl4vUhiInu2m/Nl/ckZhDbw==",
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.56.tgz",
27
- "_shasum": "e12db7a9908e35c7f168473c3c6d6e732ea45035",
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.2.2",
39
- "@syncfusion/ej2-buttons": "~27.2.2",
40
- "@syncfusion/ej2-compression": "~27.2.2",
41
- "@syncfusion/ej2-data": "~27.2.2",
42
- "@syncfusion/ej2-file-utils": "~27.2.2",
43
- "@syncfusion/ej2-pdf-export": "~27.2.2",
44
- "@syncfusion/ej2-svg-base": "~27.2.2"
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.2.2",
96
+ "version": "28.1.33",
97
97
  "sideEffects": false
98
98
  }
@@ -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 };
@@ -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
  }
@@ -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
  *
@@ -21,7 +21,7 @@ import { MapsTooltip } from './user-interaction/tooltip';
21
21
  import { Zoom } from './user-interaction/zoom';
22
22
  import { ProjectionType, MapsTheme, PanDirection, TooltipGesture } from './utils/enum';
23
23
  import { MapsModel } from './maps-model';
24
- import { ILoadEventArgs, ILoadedEventArgs, IMinMaxLatitudeLongitude, IMouseEventArgs, IResizeEventArgs, ITooltipRenderEventArgs } from './model/interface';
24
+ import { ILoadEventArgs, ILoadedEventArgs, IMinMaxLatitudeLongitude, IMouseEventArgs, IMouseMoveEventArgs, IResizeEventArgs, ITooltipRenderEventArgs } from './model/interface';
25
25
  import { GeoPosition, ITooltipRenderCompleteEventArgs, ILegendRenderingEventArgs } from './model/interface';
26
26
  import { ILayerRenderingEventArgs, IShapeRenderingEventArgs, IMarkerRenderingEventArgs, IMarkerClickEventArgs } from './model/interface';
27
27
  import { IMarkerMoveEventArgs, ILabelRenderingEventArgs, IBubbleMoveEventArgs, IBubbleClickEventArgs } from './model/interface';
@@ -416,6 +416,12 @@ export declare class Maps extends Component<HTMLElement> implements INotifyPrope
416
416
  * @event markerMouseMove
417
417
  */
418
418
  markerMouseMove: EmitType<IMarkerMoveEventArgs>;
419
+ /**
420
+ * This event is triggered when the mouse pointer moves over the map.
421
+ *
422
+ * @event mouseMove
423
+ */
424
+ mouseMove: EmitType<IMouseMoveEventArgs>;
419
425
  /**
420
426
  * Triggers before the data-label gets rendered.
421
427
  *
@@ -536,8 +542,10 @@ export declare class Maps extends Component<HTMLElement> implements INotifyPrope
536
542
  private resizeTo;
537
543
  /**
538
544
  * Resize the map
545
+ *
546
+ * @private
539
547
  */
540
- private isResize;
548
+ isResize: boolean;
541
549
  /**
542
550
  * @private
543
551
  */
@@ -998,6 +1006,14 @@ export declare class Maps extends Component<HTMLElement> implements INotifyPrope
998
1006
  * @private
999
1007
  */
1000
1008
  mouseMoveOnMap(e: PointerEvent): void;
1009
+ /**
1010
+ * To check and trigger mouse move event on maps.
1011
+ *
1012
+ * @param {PointerEvent} e - Specifies the pointer event on maps.
1013
+ * @returns {void}
1014
+ * @private
1015
+ */
1016
+ private mouseMoveEvent;
1001
1017
  /**
1002
1018
  * This method is used to perform operations when mouse move event is performed on maps.
1003
1019
  *
@@ -1053,7 +1069,7 @@ export declare class Maps extends Component<HTMLElement> implements INotifyPrope
1053
1069
  * @param {MarkerSettingsModel[]} markerCollection - Specifies the settings of the marker to be added.
1054
1070
  * @returns {void}
1055
1071
  */
1056
- addMarker(layerIndex: number, markerCollection: MarkerSettingsModel[]): void;
1072
+ addMarker(layerIndex?: number, markerCollection?: MarkerSettingsModel[]): void;
1057
1073
  /**
1058
1074
  * This method is used to select the geometric shape element in the maps.
1059
1075
  *