@antv/l7-component 2.17.3 → 2.17.4

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 (50) hide show
  1. package/es/assets/iconfont/iconfont.js +17 -10
  2. package/es/control/baseControl/buttonControl.js +42 -9
  3. package/es/control/baseControl/control.js +53 -24
  4. package/es/control/baseControl/index.d.ts +4 -4
  5. package/es/control/baseControl/index.js +4 -4
  6. package/es/control/baseControl/popperControl.js +24 -10
  7. package/es/control/baseControl/selectControl.js +45 -6
  8. package/es/control/exportImage.js +116 -76
  9. package/es/control/fullscreen.js +53 -20
  10. package/es/control/geoLocate.js +66 -36
  11. package/es/control/layerSwitch.js +31 -0
  12. package/es/control/logo.js +14 -2
  13. package/es/control/mapTheme.js +32 -7
  14. package/es/control/mouseLocation.js +23 -2
  15. package/es/control/scale.js +29 -6
  16. package/es/control/zoom.js +23 -0
  17. package/es/index.d.ts +11 -11
  18. package/es/index.js +23 -13
  19. package/es/marker-layer.js +75 -41
  20. package/es/marker.js +83 -29
  21. package/es/popup/layerPopup.js +82 -31
  22. package/es/popup/popup.js +127 -48
  23. package/es/utils/anchor.js +7 -3
  24. package/es/utils/popper.js +64 -15
  25. package/es/utils/screenfull.js +52 -23
  26. package/lib/assets/iconfont/iconfont.js +17 -10
  27. package/lib/control/baseControl/buttonControl.js +52 -9
  28. package/lib/control/baseControl/control.js +68 -24
  29. package/lib/control/baseControl/index.js +35 -41
  30. package/lib/control/baseControl/popperControl.js +29 -10
  31. package/lib/control/baseControl/selectControl.js +60 -6
  32. package/lib/control/exportImage.js +125 -76
  33. package/lib/control/fullscreen.js +60 -20
  34. package/lib/control/geoLocate.js +75 -36
  35. package/lib/control/layerSwitch.js +36 -0
  36. package/lib/control/logo.js +26 -2
  37. package/lib/control/mapTheme.js +42 -7
  38. package/lib/control/mouseLocation.js +33 -2
  39. package/lib/control/scale.js +40 -6
  40. package/lib/control/zoom.js +33 -0
  41. package/lib/index.js +108 -122
  42. package/lib/marker-layer.js +86 -39
  43. package/lib/marker.js +91 -29
  44. package/lib/popup/layerPopup.js +94 -29
  45. package/lib/popup/popup.js +139 -48
  46. package/lib/utils/anchor.js +9 -4
  47. package/lib/utils/icon.js +2 -0
  48. package/lib/utils/popper.js +71 -14
  49. package/lib/utils/screenfull.js +54 -23
  50. package/package.json +6 -6
@@ -1,32 +1,54 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.default = void 0;
9
+
8
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
9
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
10
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
11
16
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
12
18
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
13
20
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
14
22
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
15
24
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
16
26
  var _l7Core = require("@antv/l7-core");
27
+
17
28
  var _l7Utils = require("@antv/l7-utils");
29
+
18
30
  var _eventemitter = require("eventemitter3");
31
+
19
32
  var _lodash = require("lodash");
33
+
20
34
  var _supercluster = _interopRequireDefault(require("supercluster/dist/supercluster"));
35
+
21
36
  var _marker = _interopRequireDefault(require("./marker"));
37
+
22
38
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
39
+
23
40
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
41
+
24
42
  var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
25
43
  (0, _inherits2.default)(MarkerLayer, _EventEmitter);
44
+
26
45
  var _super = _createSuper(MarkerLayer);
46
+
27
47
  function MarkerLayer(option) {
28
48
  var _this$markerLayerOpti;
49
+
29
50
  var _this;
51
+
30
52
  (0, _classCallCheck2.default)(this, MarkerLayer);
31
53
  _this = _super.call(this);
32
54
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "markers", []);
@@ -37,6 +59,7 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
37
59
  _this.zoom = ((_this$markerLayerOpti = _this.markerLayerOption.clusterOption) === null || _this$markerLayerOpti === void 0 ? void 0 : _this$markerLayerOpti.zoom) || -99;
38
60
  return _this;
39
61
  }
62
+
40
63
  (0, _createClass2.default)(MarkerLayer, [{
41
64
  key: "getDefault",
42
65
  value: function getDefault() {
@@ -51,60 +74,63 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
51
74
  className: ''
52
75
  }
53
76
  };
54
- }
77
+ } // 执行scene.addMarkerLayer时调用
55
78
 
56
- // 执行scene.addMarkerLayer时调用
57
79
  }, {
58
80
  key: "addTo",
59
81
  value: function addTo(scene) {
60
82
  // this.remove();
61
83
  this.scene = scene;
62
84
  this.mapsService = scene.get(_l7Core.TYPES.IMapService);
85
+
63
86
  if (this.markerLayerOption.cluster) {
64
87
  this.initCluster();
65
- this.update();
66
- // 地图视野变化时,重新计算视野内的聚合点。
88
+ this.update(); // 地图视野变化时,重新计算视野内的聚合点。
89
+
67
90
  this.mapsService.on('camerachange', this.update); // amap1.x 更新事件
91
+
68
92
  this.mapsService.on('viewchange', this.update); // amap2.0 更新事件
69
93
  }
70
94
 
71
95
  this.mapsService.on('camerachange', this.setContainerSize.bind(this)); // amap1.x 更新事件
96
+
72
97
  this.mapsService.on('viewchange', this.setContainerSize.bind(this)); // amap2.0 更新事件
98
+
73
99
  this.addMarkers();
74
100
  this.inited = true;
75
101
  return this;
76
- }
102
+ } // 设置容器大小
77
103
 
78
- // 设置容器大小
79
104
  }, {
80
105
  key: "setContainerSize",
81
106
  value: function setContainerSize() {
82
107
  if (!this.mapsService) {
83
108
  return;
84
109
  }
110
+
85
111
  var container = this.mapsService.getContainer();
86
112
  this.containerSize = {
87
113
  containerWidth: (container === null || container === void 0 ? void 0 : container.scrollWidth) || 0,
88
114
  containerHeight: (container === null || container === void 0 ? void 0 : container.scrollHeight) || 0,
89
115
  bounds: this.mapsService.getBounds()
90
116
  };
91
- }
117
+ } // 获取容器尺寸
92
118
 
93
- // 获取容器尺寸
94
119
  }, {
95
120
  key: "getContainerSize",
96
121
  value: function getContainerSize() {
97
122
  return this.containerSize;
98
- }
123
+ } // 在图层添加单个marker
99
124
 
100
- // 在图层添加单个marker
101
125
  }, {
102
126
  key: "addMarker",
103
127
  value: function addMarker(marker) {
104
128
  var cluster = this.markerLayerOption.cluster;
105
129
  marker.getMarkerLayerContainerSize = this.getContainerSize.bind(this);
130
+
106
131
  if (cluster) {
107
132
  this.addPoint(marker, this.markers.length);
133
+
108
134
  if (this.mapsService) {
109
135
  // 在新增 marker 的时候需要更新聚合信息(哪怕此时的 zoom 没有发生变化)
110
136
  var zoom = this.mapsService.getZoom();
@@ -114,8 +140,8 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
114
140
  this.getClusterMarker(this.bbox, this.zoom);
115
141
  }
116
142
  }
117
- this.markers.push(marker);
118
- // if(this.inited) {
143
+
144
+ this.markers.push(marker); // if(this.inited) {
119
145
  // marker.addTo(this.scene);
120
146
  // }
121
147
  }
@@ -124,14 +150,15 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
124
150
  value: function removeMarker(marker) {
125
151
  this.markers.indexOf(marker);
126
152
  var markerIndex = this.markers.indexOf(marker);
153
+
127
154
  if (markerIndex > -1) {
128
155
  this.markers.splice(markerIndex, 1);
129
156
  }
130
157
  }
131
-
132
158
  /**
133
159
  * 隐藏 marker 在每个 marker 上单独修改属性而不是在 markerContainer 上修改(在 markerContainer 修改会有用户在场景加载完之前调用失败的问题)
134
160
  */
161
+
135
162
  }, {
136
163
  key: "hide",
137
164
  value: function hide() {
@@ -142,10 +169,10 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
142
169
  m.getElement().style.opacity = '0';
143
170
  });
144
171
  }
145
-
146
172
  /**
147
173
  * 显示 marker
148
174
  */
175
+
149
176
  }, {
150
177
  key: "show",
151
178
  value: function show() {
@@ -155,27 +182,25 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
155
182
  this.clusterMarkers.map(function (m) {
156
183
  m.getElement().style.opacity = '1';
157
184
  });
158
- }
185
+ } // 返回当下的markers数据,有聚合图时返回聚合的marker列表,否则返回原始maerker列表
159
186
 
160
- // 返回当下的markers数据,有聚合图时返回聚合的marker列表,否则返回原始maerker列表
161
187
  }, {
162
188
  key: "getMarkers",
163
189
  value: function getMarkers() {
164
190
  var cluster = this.markerLayerOption.cluster;
165
191
  return cluster ? this.clusterMarkers : this.markers;
166
- }
192
+ } // 批量添加marker到scene
167
193
 
168
- // 批量添加marker到scene
169
194
  }, {
170
195
  key: "addMarkers",
171
196
  value: function addMarkers() {
172
197
  var _this2 = this;
198
+
173
199
  this.getMarkers().forEach(function (marker) {
174
200
  marker.addTo(_this2.scene);
175
201
  });
176
- }
202
+ } // 清除图层里的marker
177
203
 
178
- // 清除图层里的marker
179
204
  }, {
180
205
  key: "clear",
181
206
  value: function clear() {
@@ -198,15 +223,15 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
198
223
  this.mapsService.off('viewchange', this.update);
199
224
  this.mapsService.off('camerachange', this.setContainerSize.bind(this));
200
225
  this.mapsService.off('viewchange', this.setContainerSize.bind(this));
201
- }
226
+ } // 将marker数据保存在point中
202
227
 
203
- // 将marker数据保存在point中
204
228
  }, {
205
229
  key: "addPoint",
206
230
  value: function addPoint(marker, id) {
207
231
  var _marker$getLnglat = marker.getLnglat(),
208
- lng = _marker$getLnglat.lng,
209
- lat = _marker$getLnglat.lat;
232
+ lng = _marker$getLnglat.lng,
233
+ lat = _marker$getLnglat.lat;
234
+
210
235
  var feature = {
211
236
  geometry: {
212
237
  type: 'Point',
@@ -217,6 +242,7 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
217
242
  })
218
243
  };
219
244
  this.points.push(feature);
245
+
220
246
  if (this.clusterIndex) {
221
247
  // 在新增点的时候需要更新 cluster 的数据
222
248
  this.clusterIndex.load(this.points);
@@ -228,23 +254,25 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
228
254
  if (!this.markerLayerOption.cluster) {
229
255
  return;
230
256
  }
257
+
231
258
  var _this$markerLayerOpti2 = this.markerLayerOption.clusterOption,
232
- radius = _this$markerLayerOpti2.radius,
233
- _this$markerLayerOpti3 = _this$markerLayerOpti2.minZoom,
234
- minZoom = _this$markerLayerOpti3 === void 0 ? 0 : _this$markerLayerOpti3,
235
- maxZoom = _this$markerLayerOpti2.maxZoom;
259
+ radius = _this$markerLayerOpti2.radius,
260
+ _this$markerLayerOpti3 = _this$markerLayerOpti2.minZoom,
261
+ minZoom = _this$markerLayerOpti3 === void 0 ? 0 : _this$markerLayerOpti3,
262
+ maxZoom = _this$markerLayerOpti2.maxZoom;
236
263
  this.clusterIndex = new _supercluster.default({
237
264
  radius: radius,
238
265
  minZoom: minZoom,
239
266
  maxZoom: maxZoom
240
- });
241
- // @ts-ignore
267
+ }); // @ts-ignore
268
+
242
269
  this.clusterIndex.load(this.points);
243
270
  }
244
271
  }, {
245
272
  key: "getClusterMarker",
246
273
  value: function getClusterMarker(viewBounds, zoom) {
247
274
  var _this3 = this;
275
+
248
276
  var viewBBox = viewBounds[0].concat(viewBounds[1]);
249
277
  var clusterPoint = this.clusterIndex.getClusters(viewBBox, zoom);
250
278
  this.clusterMarkers.forEach(function (marker) {
@@ -253,27 +281,37 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
253
281
  this.clusterMarkers = [];
254
282
  clusterPoint.forEach(function (feature) {
255
283
  var _feature$properties;
284
+
256
285
  var _this3$markerLayerOpt = _this3.markerLayerOption.clusterOption,
257
- field = _this3$markerLayerOpt.field,
258
- method = _this3$markerLayerOpt.method;
259
- // 处理聚合数据
286
+ field = _this3$markerLayerOpt.field,
287
+ method = _this3$markerLayerOpt.method; // 处理聚合数据
288
+
260
289
  if ((_feature$properties = feature.properties) !== null && _feature$properties !== void 0 && _feature$properties.cluster_id) {
261
290
  var _feature$properties2;
291
+
262
292
  var clusterData = _this3.getLeaves((_feature$properties2 = feature.properties) === null || _feature$properties2 === void 0 ? void 0 : _feature$properties2.cluster_id);
293
+
263
294
  feature.properties.clusterData = clusterData;
295
+
264
296
  if (field && method) {
265
297
  var columnData = clusterData === null || clusterData === void 0 ? void 0 : clusterData.map(function (item) {
266
298
  var data = (0, _defineProperty2.default)({}, field, item.properties[field]);
267
299
  return data;
268
300
  });
301
+
269
302
  var column = _l7Utils.Satistics.getColumn(columnData, field);
303
+
270
304
  var stat = _l7Utils.Satistics.getSatByColumn(method, column);
305
+
271
306
  var fieldName = 'point_' + method;
272
307
  feature.properties[fieldName] = stat.toFixed(2);
273
308
  }
274
309
  }
310
+
275
311
  var marker = _this3.clusterMarker(feature);
312
+
276
313
  _this3.clusterMarkers.push(marker);
314
+
277
315
  marker.addTo(_this3.scene);
278
316
  });
279
317
  }
@@ -282,9 +320,11 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
282
320
  value: function getLeaves(clusterId) {
283
321
  var limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Infinity;
284
322
  var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
323
+
285
324
  if (!clusterId) {
286
325
  return null;
287
326
  }
327
+
288
328
  return this.clusterIndex.getLeaves(clusterId, limit, offset);
289
329
  }
290
330
  }, {
@@ -292,8 +332,8 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
292
332
  value: function clusterMarker(feature) {
293
333
  var clusterOption = this.markerLayerOption.clusterOption;
294
334
  var _ref = clusterOption,
295
- _ref$element = _ref.element,
296
- element = _ref$element === void 0 ? this.generateElement.bind(this) : _ref$element;
335
+ _ref$element = _ref.element,
336
+ element = _ref$element === void 0 ? this.generateElement.bind(this) : _ref$element;
297
337
  var marker = new _marker.default({
298
338
  element: element(feature)
299
339
  }).setLnglat({
@@ -313,13 +353,16 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
313
353
  value: function update() {
314
354
  if (!this.mapsService) {
315
355
  return;
316
- }
317
- // 当图层中无marker时,无需更新
356
+ } // 当图层中无marker时,无需更新
357
+
358
+
318
359
  if (this.markers.length === 0) {
319
360
  return;
320
361
  }
362
+
321
363
  var zoom = this.mapsService.getZoom();
322
364
  var bbox = this.mapsService.getBounds();
365
+
323
366
  if (!this.bbox || Math.abs(zoom - this.zoom) >= 1 || !(0, _l7Utils.boundsContains)(this.bbox, bbox)) {
324
367
  this.bbox = (0, _l7Utils.padBounds)(bbox, 0.5);
325
368
  this.zoom = Math.floor(zoom);
@@ -330,11 +373,14 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
330
373
  key: "generateElement",
331
374
  value: function generateElement(feature) {
332
375
  var el = _l7Utils.DOM.create('div', 'l7-marker-cluster');
376
+
333
377
  var label = _l7Utils.DOM.create('div', '', el);
378
+
334
379
  var span = _l7Utils.DOM.create('span', '', label);
380
+
335
381
  var _this$markerLayerOpti4 = this.markerLayerOption.clusterOption,
336
- field = _this$markerLayerOpti4.field,
337
- method = _this$markerLayerOpti4.method;
382
+ field = _this$markerLayerOpti4.field,
383
+ method = _this$markerLayerOpti4.method;
338
384
  feature.properties.point_count = feature.properties.point_count || 1;
339
385
  var text = field && method ? feature.properties['point_' + method] || feature.properties[field] : feature.properties.point_count;
340
386
  span.textContent = text;
@@ -343,4 +389,5 @@ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
343
389
  }]);
344
390
  return MarkerLayer;
345
391
  }(_eventemitter.EventEmitter);
392
+
346
393
  exports.default = MarkerLayer;