@antv/l7-component 2.18.2 → 2.19.0

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 (114) hide show
  1. package/es/assets/iconfont/iconfont.js +46 -0
  2. package/es/constants/index.d.ts +60 -0
  3. package/es/constants/index.js +60 -0
  4. package/es/control/baseControl/buttonControl.d.ts +59 -0
  5. package/es/control/baseControl/buttonControl.js +177 -0
  6. package/es/control/baseControl/control.d.ts +112 -0
  7. package/es/control/baseControl/control.js +302 -0
  8. package/es/control/baseControl/index.d.ts +4 -0
  9. package/es/control/baseControl/index.js +4 -0
  10. package/es/control/baseControl/popperControl.d.ts +26 -0
  11. package/es/control/baseControl/popperControl.js +120 -0
  12. package/es/control/baseControl/selectControl.d.ts +46 -0
  13. package/es/control/baseControl/selectControl.js +204 -0
  14. package/es/control/exportImage.d.ts +18 -0
  15. package/es/control/exportImage.js +159 -0
  16. package/es/control/fullscreen.d.ts +19 -0
  17. package/es/control/fullscreen.js +119 -0
  18. package/es/control/geoLocate.d.ts +16 -0
  19. package/es/control/geoLocate.js +107 -0
  20. package/es/control/layerSwitch.d.ts +19 -0
  21. package/es/control/layerSwitch.js +141 -0
  22. package/es/control/logo.d.ts +13 -0
  23. package/es/control/logo.js +75 -0
  24. package/es/control/mapTheme.d.ts +10 -0
  25. package/es/control/mapTheme.js +110 -0
  26. package/es/control/mouseLocation.d.ts +15 -0
  27. package/es/control/mouseLocation.js +83 -0
  28. package/es/control/scale.d.ts +34 -0
  29. package/es/control/scale.js +149 -0
  30. package/es/control/zoom.d.ts +38 -0
  31. package/es/control/zoom.js +132 -0
  32. package/es/css/button.less +70 -0
  33. package/es/css/control.less +71 -0
  34. package/es/css/index.css +594 -0
  35. package/es/css/index.less +12 -0
  36. package/es/css/l7.less +62 -0
  37. package/es/css/layerPopup.less +8 -0
  38. package/es/css/logo.less +18 -0
  39. package/es/css/mouseLocation.less +9 -0
  40. package/es/css/popper.less +64 -0
  41. package/es/css/popup.less +185 -0
  42. package/es/css/scale.less +34 -0
  43. package/es/css/select.less +86 -0
  44. package/es/css/variables.less +30 -0
  45. package/es/css/zoom.less +29 -0
  46. package/es/images/layers.png +0 -0
  47. package/es/images/layers.svg +1 -0
  48. package/es/images/logo.png +0 -0
  49. package/es/images/quanping.svg +12 -0
  50. package/es/index.d.ts +18 -0
  51. package/es/index.js +49 -0
  52. package/es/interface.d.ts +18 -0
  53. package/es/interface.js +1 -0
  54. package/es/marker-layer.d.ts +54 -0
  55. package/es/marker-layer.js +343 -0
  56. package/es/marker.d.ts +55 -0
  57. package/es/marker.js +410 -0
  58. package/es/popup/layerPopup.d.ts +95 -0
  59. package/es/popup/layerPopup.js +343 -0
  60. package/es/popup/popup.d.ts +139 -0
  61. package/es/popup/popup.js +575 -0
  62. package/es/utils/anchor.d.ts +22 -0
  63. package/es/utils/anchor.js +31 -0
  64. package/es/utils/icon.d.ts +1 -0
  65. package/es/utils/icon.js +9 -0
  66. package/es/utils/popper.d.ts +76 -0
  67. package/es/utils/popper.js +266 -0
  68. package/es/utils/screenfull.d.ts +2 -0
  69. package/es/utils/screenfull.js +128 -0
  70. package/lib/assets/iconfont/iconfont.js +48 -0
  71. package/lib/constants/index.js +68 -0
  72. package/lib/control/baseControl/buttonControl.js +183 -0
  73. package/lib/control/baseControl/control.js +314 -0
  74. package/lib/control/baseControl/index.js +39 -0
  75. package/lib/control/baseControl/popperControl.js +126 -0
  76. package/lib/control/baseControl/selectControl.js +210 -0
  77. package/lib/control/exportImage.js +165 -0
  78. package/lib/control/fullscreen.js +125 -0
  79. package/lib/control/geoLocate.js +113 -0
  80. package/lib/control/layerSwitch.js +147 -0
  81. package/lib/control/logo.js +81 -0
  82. package/lib/control/mapTheme.js +116 -0
  83. package/lib/control/mouseLocation.js +89 -0
  84. package/lib/control/scale.js +155 -0
  85. package/lib/control/zoom.js +138 -0
  86. package/lib/css/button.less +70 -0
  87. package/lib/css/control.less +71 -0
  88. package/lib/css/index.css +594 -0
  89. package/lib/css/index.less +12 -0
  90. package/lib/css/l7.less +62 -0
  91. package/lib/css/layerPopup.less +8 -0
  92. package/lib/css/logo.less +18 -0
  93. package/lib/css/mouseLocation.less +9 -0
  94. package/lib/css/popper.less +64 -0
  95. package/lib/css/popup.less +185 -0
  96. package/lib/css/scale.less +34 -0
  97. package/lib/css/select.less +86 -0
  98. package/lib/css/variables.less +30 -0
  99. package/lib/css/zoom.less +29 -0
  100. package/lib/images/layers.png +0 -0
  101. package/lib/images/layers.svg +1 -0
  102. package/lib/images/logo.png +0 -0
  103. package/lib/images/quanping.svg +12 -0
  104. package/lib/index.js +169 -0
  105. package/lib/interface.js +5 -0
  106. package/lib/marker-layer.js +349 -0
  107. package/lib/marker.js +417 -0
  108. package/lib/popup/layerPopup.js +349 -0
  109. package/lib/popup/popup.js +581 -0
  110. package/lib/utils/anchor.js +40 -0
  111. package/lib/utils/icon.js +16 -0
  112. package/lib/utils/popper.js +270 -0
  113. package/lib/utils/screenfull.js +136 -0
  114. package/package.json +6 -6
@@ -0,0 +1,349 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.LayerPopup = void 0;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
12
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
13
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
15
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
+ var _l7Utils = require("@antv/l7-utils");
18
+ var _popup = _interopRequireDefault(require("./popup"));
19
+ 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); }; }
20
+ 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; } }
21
+ var get = _l7Utils.lodashUtil.get;
22
+ var LayerPopup = /*#__PURE__*/function (_Popup) {
23
+ (0, _inherits2.default)(LayerPopup, _Popup);
24
+ var _super = _createSuper(LayerPopup);
25
+ function LayerPopup() {
26
+ var _this;
27
+ (0, _classCallCheck2.default)(this, LayerPopup);
28
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
29
+ args[_key] = arguments[_key];
30
+ }
31
+ _this = _super.call.apply(_super, [this].concat(args));
32
+ /**
33
+ * 用于统计当前帧当中,layer 被点击的次数
34
+ */
35
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "layerClickCountByFrame", 0);
36
+ /**
37
+ * 用于保存图层对应的事件回调以及配置信息
38
+ * @protected
39
+ */
40
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "layerConfigMap", new WeakMap());
41
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onLayerClick", function (layer, e) {
42
+ requestAnimationFrame(function () {
43
+ if (_this.popupOption.closeOnClick) {
44
+ _this.layerClickCountByFrame++;
45
+ }
46
+ if (_this.isShow && _this.isSameFeature(layer, e.featureId)) {
47
+ _this.hide();
48
+ } else {
49
+ var _this$getLayerInfoFra = _this.getLayerInfoFrag(layer, e),
50
+ title = _this$getLayerInfoFra.title,
51
+ content = _this$getLayerInfoFra.content;
52
+ _this.setDOMContent(content);
53
+ _this.setLnglat(e.lngLat);
54
+ _this.setTitle(title);
55
+ _this.displayFeatureInfo = {
56
+ layer: layer,
57
+ featureId: e.featureId
58
+ };
59
+ _this.show();
60
+ }
61
+ });
62
+ });
63
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onSceneClick", function () {
64
+ _this.layerClickCountByFrame = 0;
65
+ requestAnimationFrame(function () {
66
+ if (!_this.layerClickCountByFrame) {
67
+ _this.hide();
68
+ }
69
+ });
70
+ });
71
+ /**
72
+ * 覆盖 Popup 中的默认的 closeOnClick 行为
73
+ */
74
+ // tslint:disable-next-line:no-empty
75
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateCloseOnClick", function () {});
76
+ return _this;
77
+ }
78
+ (0, _createClass2.default)(LayerPopup, [{
79
+ key: "layerConfigItems",
80
+ get:
81
+ /**
82
+ * 当期正在展示的图层以及对应元素 id 的信息
83
+ * @protected
84
+ */
85
+
86
+ function get() {
87
+ var _ref;
88
+ var _this$popupOption = this.popupOption,
89
+ config = _this$popupOption.config,
90
+ items = _this$popupOption.items;
91
+ return (_ref = config !== null && config !== void 0 ? config : items) !== null && _ref !== void 0 ? _ref : [];
92
+ }
93
+ }, {
94
+ key: "addTo",
95
+ value: function addTo(scene) {
96
+ (0, _get2.default)((0, _getPrototypeOf2.default)(LayerPopup.prototype), "addTo", this).call(this, scene);
97
+ this.bindLayerEvent();
98
+ this.hide();
99
+ return this;
100
+ }
101
+ }, {
102
+ key: "remove",
103
+ value: function remove() {
104
+ (0, _get2.default)((0, _getPrototypeOf2.default)(LayerPopup.prototype), "remove", this).call(this);
105
+ this.unbindLayerEvent();
106
+ return this;
107
+ }
108
+ }, {
109
+ key: "setOptions",
110
+ value: function setOptions(option) {
111
+ this.unbindLayerEvent();
112
+ (0, _get2.default)((0, _getPrototypeOf2.default)(LayerPopup.prototype), "setOptions", this).call(this, option);
113
+ this.bindLayerEvent();
114
+ return this;
115
+ }
116
+ }, {
117
+ key: "getDefault",
118
+ value: function getDefault(option) {
119
+ var isClickTrigger = option.trigger === 'click';
120
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(LayerPopup.prototype), "getDefault", this).call(this, option)), {}, {
121
+ trigger: 'hover',
122
+ followCursor: !isClickTrigger,
123
+ lngLat: {
124
+ lng: 0,
125
+ lat: 0
126
+ },
127
+ offsets: [0, 10],
128
+ closeButton: false,
129
+ closeOnClick: true,
130
+ autoClose: false,
131
+ closeOnEsc: false
132
+ });
133
+ }
134
+
135
+ /**
136
+ * 绑定对应的图层事件
137
+ * @protected
138
+ */
139
+ }, {
140
+ key: "bindLayerEvent",
141
+ value: function bindLayerEvent() {
142
+ var _this2 = this;
143
+ var _this$popupOption2 = this.popupOption,
144
+ trigger = _this$popupOption2.trigger,
145
+ closeOnClick = _this$popupOption2.closeOnClick;
146
+ this.layerConfigItems.forEach(function (configItem) {
147
+ var _layer$getSource;
148
+ var layer = _this2.getLayerByConfig(configItem);
149
+ if (!layer) {
150
+ return;
151
+ }
152
+ var layerInfo = (0, _objectSpread2.default)({}, configItem);
153
+ if (trigger === 'hover') {
154
+ var onMouseMove = _this2.onLayerMouseMove.bind(_this2, layer);
155
+ var onMouseOut = _this2.onLayerMouseOut.bind(_this2, layer);
156
+ layerInfo.onMouseMove = onMouseMove;
157
+ layerInfo.onMouseOut = onMouseOut;
158
+ layer === null || layer === void 0 ? void 0 : layer.on('mousemove', onMouseMove);
159
+ layer === null || layer === void 0 ? void 0 : layer.on('mouseout', onMouseOut);
160
+ } else {
161
+ var _this2$mapsService;
162
+ var onLayerClick = _this2.onLayerClick.bind(_this2, layer);
163
+ layerInfo.onClick = onLayerClick;
164
+ layer === null || layer === void 0 ? void 0 : layer.on('click', onLayerClick);
165
+ var mapContainer = (_this2$mapsService = _this2.mapsService) === null || _this2$mapsService === void 0 ? void 0 : _this2$mapsService.getMapContainer();
166
+ if (mapContainer && closeOnClick) {
167
+ mapContainer.addEventListener('click', _this2.onSceneClick);
168
+ }
169
+ }
170
+ var source = layer === null || layer === void 0 ? void 0 : (_layer$getSource = layer.getSource) === null || _layer$getSource === void 0 ? void 0 : _layer$getSource.call(layer);
171
+ var onSourceUpdate = _this2.onSourceUpdate.bind(_this2, layer);
172
+ source === null || source === void 0 ? void 0 : source.on('update', onSourceUpdate);
173
+ layerInfo.onSourceUpdate = onSourceUpdate;
174
+ _this2.layerConfigMap.set(layer, layerInfo);
175
+ });
176
+ }
177
+
178
+ /**
179
+ * 解绑对应的图层事件
180
+ * @protected
181
+ */
182
+ }, {
183
+ key: "unbindLayerEvent",
184
+ value: function unbindLayerEvent() {
185
+ var _this3 = this;
186
+ this.layerConfigItems.forEach(function (configItem) {
187
+ var _this3$mapsService;
188
+ var layer = _this3.getLayerByConfig(configItem);
189
+ var layerInfo = layer && _this3.layerConfigMap.get(layer);
190
+ if (!layerInfo) {
191
+ return;
192
+ }
193
+ var onMouseMove = layerInfo.onMouseMove,
194
+ onMouseOut = layerInfo.onMouseOut,
195
+ onClick = layerInfo.onClick,
196
+ onSourceUpdate = layerInfo.onSourceUpdate;
197
+ if (onMouseMove) {
198
+ layer.off('mousemove', onMouseMove);
199
+ }
200
+ if (onMouseOut) {
201
+ layer.off('mouseout', onMouseOut);
202
+ }
203
+ if (onClick) {
204
+ layer.off('click', onClick);
205
+ }
206
+ if (onSourceUpdate) {
207
+ var _layer$getSource2;
208
+ layer === null || layer === void 0 ? void 0 : (_layer$getSource2 = layer.getSource()) === null || _layer$getSource2 === void 0 ? void 0 : _layer$getSource2.off('update', onSourceUpdate);
209
+ }
210
+ var mapContainer = (_this3$mapsService = _this3.mapsService) === null || _this3$mapsService === void 0 ? void 0 : _this3$mapsService.getMapContainer();
211
+ if (mapContainer) {
212
+ mapContainer.removeEventListener('click', _this3.onSceneClick);
213
+ }
214
+ });
215
+ }
216
+ }, {
217
+ key: "onLayerMouseMove",
218
+ value: function onLayerMouseMove(layer, e) {
219
+ if (!this.isSameFeature(layer, e.featureId)) {
220
+ var _this$getLayerInfoFra2 = this.getLayerInfoFrag(layer, e),
221
+ title = _this$getLayerInfoFra2.title,
222
+ content = _this$getLayerInfoFra2.content;
223
+ this.setDOMContent(content);
224
+ this.setTitle(title);
225
+ this.displayFeatureInfo = {
226
+ layer: layer,
227
+ featureId: e.featureId
228
+ };
229
+ this.show();
230
+ }
231
+ }
232
+
233
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
234
+ }, {
235
+ key: "onLayerMouseOut",
236
+ value: function onLayerMouseOut(layer, e) {
237
+ this.displayFeatureInfo = undefined;
238
+ if (this.isShow) {
239
+ this.hide();
240
+ }
241
+ }
242
+ }, {
243
+ key: "onSourceUpdate",
244
+ value: function onSourceUpdate(layer) {
245
+ this.hide();
246
+ this.displayFeatureInfo = undefined;
247
+ }
248
+
249
+ /**
250
+ * 通过当前图层和对应选中的元素获取气泡展示的 HTML 内容
251
+ * @param layer
252
+ * @param e
253
+ * @protected
254
+ */
255
+ }, {
256
+ key: "getLayerInfoFrag",
257
+ value: function getLayerInfoFrag(layer, e) {
258
+ var layerInfo = this.layerConfigMap.get(layer);
259
+ var titleFrag;
260
+ var contentFrag = document.createDocumentFragment();
261
+ if (layerInfo) {
262
+ var _feature = e.feature;
263
+ if (_feature.type === 'Feature' && 'properties' in _feature && 'geometry' in _feature) {
264
+ _feature = _feature.properties;
265
+ }
266
+ var title = layerInfo.title,
267
+ fields = layerInfo.fields,
268
+ customContent = layerInfo.customContent;
269
+ if (title) {
270
+ titleFrag = document.createDocumentFragment();
271
+ var titleElement = title instanceof Function ? title(_feature) : title;
272
+ _l7Utils.DOM.appendElementType(titleFrag, titleElement);
273
+ }
274
+ if (customContent) {
275
+ var content = customContent instanceof Function ? customContent(_feature) : customContent;
276
+ _l7Utils.DOM.appendElementType(contentFrag, content);
277
+ } else if (fields !== null && fields !== void 0 && fields.length) {
278
+ fields === null || fields === void 0 ? void 0 : fields.forEach(function (fieldConfig) {
279
+ var _ref3, _ref4;
280
+ var _ref2 = typeof fieldConfig === 'string' ?
281
+ // tslint:disable-next-line:no-object-literal-type-assertion
282
+ {
283
+ field: fieldConfig
284
+ } : fieldConfig,
285
+ field = _ref2.field,
286
+ formatField = _ref2.formatField,
287
+ formatValue = _ref2.formatValue,
288
+ getValue = _ref2.getValue;
289
+ var row = _l7Utils.DOM.create('div', 'l7-layer-popup__row');
290
+ var value = getValue ? getValue(e.feature) : get(_feature, field);
291
+ var fieldElement = (_ref3 = formatField instanceof Function ? formatField(field, _feature) : formatField) !== null && _ref3 !== void 0 ? _ref3 : field;
292
+ var valueElement = (_ref4 = formatValue instanceof Function ? formatValue(value, _feature) : formatValue) !== null && _ref4 !== void 0 ? _ref4 : value;
293
+ var fieldSpan = _l7Utils.DOM.create('span', 'l7-layer-popup__key', row);
294
+ _l7Utils.DOM.appendElementType(fieldSpan, fieldElement);
295
+ _l7Utils.DOM.appendElementType(fieldSpan, document.createTextNode(':'));
296
+ var valueSpan = _l7Utils.DOM.create('span', 'l7-layer-popup__value', row);
297
+
298
+ // 当 value 中每项元素均为基础数据类型时,用逗号隔开
299
+ if (Array.isArray(valueElement) && valueElement.every(function (item) {
300
+ return !(item instanceof Object);
301
+ })) {
302
+ valueElement = valueElement.map(function (item) {
303
+ return String(item);
304
+ }).join(',');
305
+ }
306
+ _l7Utils.DOM.appendElementType(valueSpan, valueElement);
307
+ contentFrag.appendChild(row);
308
+ });
309
+ }
310
+ }
311
+ return {
312
+ title: titleFrag,
313
+ content: contentFrag
314
+ };
315
+ }
316
+
317
+ /**
318
+ * 通过 Layer 配置访问到真实的 Layer 实例
319
+ * @param configItem
320
+ * @protected
321
+ */
322
+ }, {
323
+ key: "getLayerByConfig",
324
+ value: function getLayerByConfig(configItem) {
325
+ var layer = configItem.layer;
326
+ if (layer instanceof Object) {
327
+ return layer;
328
+ }
329
+ if (typeof layer === 'string') {
330
+ return this.layerService.getLayer(layer) || this.layerService.getLayerByName(layer);
331
+ }
332
+ }
333
+
334
+ /**
335
+ * 判断当前展示的 Feature 是否和上一次查看的一致
336
+ * @param layer
337
+ * @param featureId
338
+ * @protected
339
+ */
340
+ }, {
341
+ key: "isSameFeature",
342
+ value: function isSameFeature(layer, featureId) {
343
+ var displayFeatureInfo = this.displayFeatureInfo;
344
+ return displayFeatureInfo && layer === displayFeatureInfo.layer && featureId === displayFeatureInfo.featureId;
345
+ }
346
+ }]);
347
+ return LayerPopup;
348
+ }(_popup.default);
349
+ exports.default = exports.LayerPopup = LayerPopup;