@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.
- package/es/assets/iconfont/iconfont.js +17 -10
- package/es/control/baseControl/buttonControl.js +42 -9
- package/es/control/baseControl/control.js +53 -24
- package/es/control/baseControl/index.d.ts +4 -4
- package/es/control/baseControl/index.js +4 -4
- package/es/control/baseControl/popperControl.js +24 -10
- package/es/control/baseControl/selectControl.js +45 -6
- package/es/control/exportImage.js +116 -76
- package/es/control/fullscreen.js +53 -20
- package/es/control/geoLocate.js +66 -36
- package/es/control/layerSwitch.js +31 -0
- package/es/control/logo.js +14 -2
- package/es/control/mapTheme.js +32 -7
- package/es/control/mouseLocation.js +23 -2
- package/es/control/scale.js +29 -6
- package/es/control/zoom.js +23 -0
- package/es/index.d.ts +11 -11
- package/es/index.js +23 -13
- package/es/marker-layer.js +75 -41
- package/es/marker.js +83 -29
- package/es/popup/layerPopup.js +82 -31
- package/es/popup/popup.js +127 -48
- package/es/utils/anchor.js +7 -3
- package/es/utils/popper.js +64 -15
- package/es/utils/screenfull.js +52 -23
- package/lib/assets/iconfont/iconfont.js +17 -10
- package/lib/control/baseControl/buttonControl.js +52 -9
- package/lib/control/baseControl/control.js +68 -24
- package/lib/control/baseControl/index.js +35 -41
- package/lib/control/baseControl/popperControl.js +29 -10
- package/lib/control/baseControl/selectControl.js +60 -6
- package/lib/control/exportImage.js +125 -76
- package/lib/control/fullscreen.js +60 -20
- package/lib/control/geoLocate.js +75 -36
- package/lib/control/layerSwitch.js +36 -0
- package/lib/control/logo.js +26 -2
- package/lib/control/mapTheme.js +42 -7
- package/lib/control/mouseLocation.js +33 -2
- package/lib/control/scale.js +40 -6
- package/lib/control/zoom.js +33 -0
- package/lib/index.js +108 -122
- package/lib/marker-layer.js +86 -39
- package/lib/marker.js +91 -29
- package/lib/popup/layerPopup.js +94 -29
- package/lib/popup/popup.js +139 -48
- package/lib/utils/anchor.js +9 -4
- package/lib/utils/icon.js +2 -0
- package/lib/utils/popper.js +71 -14
- package/lib/utils/screenfull.js +54 -23
- package/package.json +6 -6
package/lib/marker-layer.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
209
|
-
|
|
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
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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
|
-
|
|
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
|
-
|
|
258
|
-
|
|
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
|
-
|
|
296
|
-
|
|
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
|
-
|
|
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
|
-
|
|
337
|
-
|
|
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;
|