@antv/l7-component 2.9.32-alpha.2 → 2.9.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.
package/lib/index.js ADDED
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ var _exportNames = {
9
+ Control: true,
10
+ Layers: true,
11
+ Logo: true,
12
+ Scale: true,
13
+ Zoom: true,
14
+ Marker: true,
15
+ MarkerLayer: true,
16
+ Popup: true
17
+ };
18
+ Object.defineProperty(exports, "Control", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _BaseControl.default;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "Layers", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _layer.default;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "Logo", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _logo.default;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "Marker", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _marker.default;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "MarkerLayer", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _markerLayer.default;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "Popup", {
49
+ enumerable: true,
50
+ get: function get() {
51
+ return _popup.default;
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "Scale", {
55
+ enumerable: true,
56
+ get: function get() {
57
+ return _scale.default;
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "Zoom", {
61
+ enumerable: true,
62
+ get: function get() {
63
+ return _zoom.default;
64
+ }
65
+ });
66
+
67
+ var _BaseControl = _interopRequireDefault(require("./control/BaseControl"));
68
+
69
+ var _layer = _interopRequireDefault(require("./control/layer"));
70
+
71
+ var _logo = _interopRequireDefault(require("./control/logo"));
72
+
73
+ var _scale = _interopRequireDefault(require("./control/scale"));
74
+
75
+ var _zoom = _interopRequireDefault(require("./control/zoom"));
76
+
77
+ var _marker = _interopRequireDefault(require("./marker"));
78
+
79
+ var _markerLayer = _interopRequireDefault(require("./marker-layer"));
80
+
81
+ var _popup = _interopRequireDefault(require("./popup"));
82
+
83
+ var _interface = require("./interface");
84
+
85
+ Object.keys(_interface).forEach(function (key) {
86
+ if (key === "default" || key === "__esModule") return;
87
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
88
+ if (key in exports && exports[key] === _interface[key]) return;
89
+ Object.defineProperty(exports, key, {
90
+ enumerable: true,
91
+ get: function get() {
92
+ return _interface[key];
93
+ }
94
+ });
95
+ });
96
+
97
+ // 引入样式
98
+ // TODO: 使用 Less 或者 Sass,每个组件单独引用自身样式
99
+ function loadStyles(css, doc) {
100
+ var isMiniAli = typeof my !== 'undefined' && !!my && typeof my.showToast === 'function' && my.isFRM !== true;
101
+ var isWeChatMiniProgram = typeof wx !== 'undefined' && wx !== null && (typeof wx.request !== 'undefined' || typeof wx.miniProgram !== 'undefined');
102
+
103
+ if (isMiniAli || isWeChatMiniProgram) {
104
+ return;
105
+ }
106
+
107
+ if (!doc) doc = document;
108
+
109
+ if (!doc) {
110
+ return;
111
+ }
112
+
113
+ var head = doc.head || doc.getElementsByTagName('head')[0];
114
+
115
+ if (!head) {
116
+ head = doc.createElement('head');
117
+ var body = doc.body || doc.getElementsByTagName('body')[0];
118
+
119
+ if (body) {
120
+ body.parentNode.insertBefore(head, body);
121
+ } else {
122
+ doc.documentElement.appendChild(head);
123
+ }
124
+ }
125
+
126
+ var style = doc.createElement('style');
127
+ style.type = 'text/css';
128
+
129
+ if (style.styleSheet) {
130
+ style.styleSheet.cssText = css;
131
+ } else {
132
+ style.appendChild(doc.createTextNode(css));
133
+ }
134
+
135
+ head.appendChild(style);
136
+ return style;
137
+ }
138
+
139
+ loadStyles(".l7-marker-container {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: absolute;\n}\n\n.l7-marker {\n position: absolute !important;\n top: 0;\n left: 0;\n z-index: 5;\n cursor: pointer;\n}\n\n.l7-marker-cluster {\n background-clip: padding-box;\n border-radius: 20px;\n background-color: rgba(181, 226, 140, 0.6);\n width: 40px;\n height: 40px;\n}\n.l7-marker-cluster div {\n width: 30px;\n height: 30px;\n margin-left: 5px;\n margin-top: 5px;\n text-align: center;\n border-radius: 15px;\n font: 12px 'Helvetica Neue', Arial, Helvetica, sans-serif;\n background-color: rgba(110, 204, 57, 0.6);\n}\n.l7-marker-cluster span {\n line-height: 30px;\n}\n\n.l7-popup-anchor-bottom,\n.l7-popup-anchor-bottom-left,\n.l7-popup-anchor-bottom-right {\n -webkit-box-orient: vertical;\n -webkit-box-direction: reverse;\n -ms-flex-direction: column-reverse;\n flex-direction: column-reverse;\n}\n\n.l7-popup-close-button {\n position: absolute;\n right: 0;\n top: 0;\n border: 0;\n border-radius: 0 3px 0 0;\n cursor: pointer;\n background-color: transparent;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n/* layers control */\n\n.l7-control-layers {\n -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4);\n box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4);\n background: #fff;\n border-radius: 5px;\n}\n.l7-popup-anchor-top,\n.l7-popup-anchor-top-left,\n.l7-popup-anchor-top-right {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.l7-popup-anchor-left {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n}\n\n.l7-popup-anchor-right {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: reverse;\n -ms-flex-direction: row-reverse;\n flex-direction: row-reverse;\n}\n.l7-popup {\n position: absolute;\n top: 0;\n left: 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n will-change: transform;\n pointer-events: none;\n z-index: 5;\n}\n.l7-popup-tip {\n width: 0;\n height: 0;\n border: 10px solid transparent;\n z-index: 1;\n}\n.l7-popup-anchor-top .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-top: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-top-left .l7-popup-tip {\n -webkit-align-self: flex-start;\n -ms-flex-item-align: start;\n align-self: flex-start;\n border-top: none;\n border-left: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-top-right .l7-popup-tip {\n -webkit-align-self: flex-end;\n -ms-flex-item-align: end;\n align-self: flex-end;\n border-top: none;\n border-right: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-bottom .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-bottom: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-bottom-left .l7-popup-tip {\n -webkit-align-self: flex-start;\n -ms-flex-item-align: start;\n align-self: flex-start;\n border-bottom: none;\n border-left: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-bottom-right .l7-popup-tip {\n -webkit-align-self: flex-end;\n -ms-flex-item-align: end;\n align-self: flex-end;\n border-bottom: none;\n border-right: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-left .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-left: none;\n border-right-color: #fff;\n}\n\n.l7-popup-anchor-right .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-right: none;\n border-left-color: #fff;\n}\n\n.l7-popup-close-button {\n position: absolute;\n right: 0;\n top: 0;\n border: 0;\n padding: 0;\n font-size: 25px;\n line-height: 20px;\n border-radius: 0 3px 0 0;\n cursor: pointer;\n background-color: transparent;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n.l7-popup-anchor-top-left .l7-popup-content {\n border-top-left-radius: 0;\n}\n\n.l7-popup-anchor-top-right .l7-popup-content {\n border-top-right-radius: 0;\n}\n\n.l7-popup-anchor-bottom-left .l7-popup-content {\n border-bottom-left-radius: 0;\n}\n\n.l7-popup-anchor-bottom-right .l7-popup-content {\n border-bottom-right-radius: 0;\n}\n\n.l7-popup-track-pointer {\n display: none;\n}\n\n.l7-popup-track-pointer * {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.l7-map:hover .l7-popup-track-pointer {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n}\n\n.l7-map:active .l7-popup-track-pointer {\n display: none;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n/* general toolbar styles */\n\n.l7-bar {\n -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.3);\n box-shadow: 0 0 1px rgba(0, 0, 0, 0.3);\n border-radius: 4px;\n}\n.l7-bar a,\n.l7-bar a:hover {\n background-color: #fff;\n width: 30px;\n height: 30px;\n font-size: 20px;\n display: block;\n text-align: center;\n text-decoration: none;\n color: #8e9dab;\n}\n.l7-bar a,\n.l7-control-layers-toggle {\n background-position: 50% 50%;\n background-repeat: no-repeat;\n display: block;\n}\n.l7-bar a:hover {\n background-color: #f4f4f4;\n}\n.l7-bar a:first-child {\n border-top-left-radius: 2px;\n border-top-right-radius: 2px;\n}\n.l7-bar a:last-child {\n border-bottom-left-radius: 2px;\n border-bottom-right-radius: 2px;\n border-bottom: none;\n}\n.l7-bar a.l7-disabled {\n cursor: default;\n background-color: #f4f4f4;\n color: #bbb;\n}\n\n/* control positioning */\n\n.l7-control-container {\n font: 12px/1.5 'Helvetica Neue', Arial, Helvetica, sans-serif;\n}\n.l7-control-hide {\n display: none;\n}\n.l7-control {\n position: relative;\n z-index: 800;\n pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\n pointer-events: auto;\n}\n.l7-control {\n float: left;\n clear: both;\n}\n.l7-top,\n.l7-bottom {\n position: absolute;\n z-index: 1000;\n pointer-events: none;\n}\n.l7-top {\n top: 0;\n}\n.l7-right {\n right: 0;\n}\n.l7-bottom {\n bottom: 0;\n}\n.l7-left {\n left: 0;\n}\n.l7-center {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.l7-bottom.l7-center,\n.l7-top.l7-center {\n width: 100%;\n}\n.l7-right.l7-center,\n.l7-left.l7-center {\n height: 100%;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.l7-top.l7-center,\n.l7-left.l7-center {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n.l7-bottom.l7-center,\n.l7-right.l7-center {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end;\n}\n\n.l7-center .l7-control {\n margin-right: 10px;\n margin-bottom: 10px;\n}\n\n.l7-control {\n float: left;\n clear: both;\n}\n.l7-right .l7-control {\n float: right;\n}\n.l7-top .l7-control {\n margin-top: 10px;\n}\n.l7-bottom .l7-control {\n margin-bottom: 10px;\n}\n.l7-left .l7-control {\n margin-left: 10px;\n}\n.l7-right .l7-control {\n margin-right: 10px;\n}\n\n/* attribution and scale controls */\n\n.l7-control-container .l7-control-attribution {\n background: #fff;\n background: rgba(59, 58, 58, 0.7);\n margin: 0;\n}\n.l7-control-attribution,\n.l7-control-scale-line {\n padding: 0 5px;\n color: #333;\n}\n.l7-control-attribution a {\n text-decoration: none;\n}\n.l7-control-attribution a:hover {\n text-decoration: underline;\n}\n.l7-container .l7-control-attribution,\n.l7-container .l7-control-scale {\n font-size: 11px;\n padding: 5px 5px 2px 5px;\n background: rgba(255, 255, 255, 0.7);\n}\n.l7-left .l7-control-scale {\n margin-left: 5px;\n}\n.l7-bottom .l7-control-scale {\n margin-bottom: 5px;\n}\n.l7-control-scale-line {\n border: 2px solid #000;\n border-top: none;\n color: #000;\n line-height: 1.1;\n padding: 2px 5px 1px;\n font-size: 11px;\n white-space: nowrap;\n overflow: hidden;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n\n background: #fff;\n}\n.l7-control-scale-line:not(:first-child) {\n border-top: 2px solid #777;\n border-bottom: none;\n margin-top: -2px;\n}\n.l7-control-scale-line:not(:first-child):not(:last-child) {\n border-bottom: 2px solid #777;\n}\n\n.l7-touch .l7-control-attribution,\n.l7-touch .l7-control-layers,\n.l7-touch .l7-bar {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.l7-touch .l7-control-layers,\n.l7-touch .l7-bar {\n border: 2px solid rgba(0, 0, 0, 0.2);\n background-clip: padding-box;\n}\n/*logo */\n\n.l7-ctrl-logo {\n background-size: 100% 100%;\n width: 89px;\n height: 16px;\n margin: 0 0 -3px -3px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n background-repeat: no-repeat;\n cursor: pointer;\n background-image: url('data:image/png;base64,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');\n}\n\n/* layers control */\n\n.l7-control-layers {\n -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);\n box-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);\n background: #fff;\n border-radius: 2px;\n}\n.l7-control-layers-toggle {\n background-image: url('data:image/png;base64,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');\n width: 30px;\n height: 30px;\n background-size: 20px 20px;\n}\n\n.l7-touch .l7-control-layers-toggle {\n width: 44px;\n height: 44px;\n}\n.l7-control-layers .l7-control-layers-list,\n.l7-control-layers-expanded .l7-control-layers-toggle {\n display: none;\n}\n.l7-control-layers-expanded .l7-control-layers-list {\n display: block;\n position: relative;\n}\n.l7-control-layers-expanded {\n padding: 6px 10px 6px 6px;\n color: #59626b;\n background: #fff;\n}\n.l7-control-layers-scrollbar {\n overflow-y: scroll;\n overflow-x: hidden;\n padding-right: 5px;\n}\n.l7-control-layers-selector {\n margin-top: 2px;\n position: relative;\n top: 1px;\n}\n.l7-control-layers label {\n display: block;\n padding: 8px;\n}\n.l7-control-layers label input[type='radio'],\n.l7-control-layers label input[type='checkbox'] {\n width: 14px;\n height: 14px;\n margin: 0;\n}\n.l7-control-layers-separator {\n height: 0;\n border-top: 1px solid #d8d8d8;\n margin: 5px -10px 5px -6px;\n}\n.mapboxgl-ctrl-logo {\n display: none !important;\n}\n.amap-logo {\n display: none !important;\n}\n");
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,381 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _l7Core = require("@antv/l7-core");
27
+
28
+ var _l7Utils = require("@antv/l7-utils");
29
+
30
+ var _eventemitter = require("eventemitter3");
31
+
32
+ var _lodash = require("lodash");
33
+
34
+ var _supercluster = _interopRequireDefault(require("supercluster/dist/supercluster"));
35
+
36
+ var _marker = _interopRequireDefault(require("./marker"));
37
+
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
+
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
+
42
+ var MarkerLayer = /*#__PURE__*/function (_EventEmitter) {
43
+ (0, _inherits2.default)(MarkerLayer, _EventEmitter);
44
+
45
+ var _super = _createSuper(MarkerLayer);
46
+
47
+ function MarkerLayer(option) {
48
+ var _this$markerLayerOpti;
49
+
50
+ var _this;
51
+
52
+ (0, _classCallCheck2.default)(this, MarkerLayer);
53
+ _this = _super.call(this);
54
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "markers", []);
55
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "points", []);
56
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "clusterMarkers", []);
57
+ _this.markerLayerOption = (0, _lodash.merge)(_this.getDefault(), option);
58
+ (0, _l7Utils.bindAll)(['update'], (0, _assertThisInitialized2.default)(_this));
59
+ _this.zoom = ((_this$markerLayerOpti = _this.markerLayerOption.clusterOption) === null || _this$markerLayerOpti === void 0 ? void 0 : _this$markerLayerOpti.zoom) || -99;
60
+ return _this;
61
+ }
62
+
63
+ (0, _createClass2.default)(MarkerLayer, [{
64
+ key: "getDefault",
65
+ value: function getDefault() {
66
+ return {
67
+ cluster: false,
68
+ clusterOption: {
69
+ radius: 80,
70
+ maxZoom: 20,
71
+ minZoom: 0,
72
+ zoom: -99,
73
+ style: {},
74
+ className: ''
75
+ }
76
+ };
77
+ } // 执行scene.addMarkerLayer时调用
78
+
79
+ }, {
80
+ key: "addTo",
81
+ value: function addTo(scene) {
82
+ // this.remove();
83
+ this.scene = scene;
84
+ this.mapsService = scene.get(_l7Core.TYPES.IMapService);
85
+
86
+ if (this.markerLayerOption.cluster) {
87
+ this.initCluster();
88
+ this.update(); // 地图视野变化时,重新计算视野内的聚合点。
89
+
90
+ this.mapsService.on('camerachange', this.update); // amap1.x 更新事件
91
+
92
+ this.mapsService.on('viewchange', this.update); // amap2.0 更新事件
93
+ }
94
+
95
+ this.mapsService.on('camerachange', this.setContainerSize.bind(this)); // amap1.x 更新事件
96
+
97
+ this.mapsService.on('viewchange', this.setContainerSize.bind(this)); // amap2.0 更新事件
98
+
99
+ this.addMarkers();
100
+ return this;
101
+ } // 设置容器大小
102
+
103
+ }, {
104
+ key: "setContainerSize",
105
+ value: function setContainerSize() {
106
+ if (!this.mapsService) return;
107
+ var container = this.mapsService.getContainer();
108
+ this.containerSize = {
109
+ containerWidth: (container === null || container === void 0 ? void 0 : container.scrollWidth) || 0,
110
+ containerHeight: (container === null || container === void 0 ? void 0 : container.scrollHeight) || 0,
111
+ bounds: this.mapsService.getBounds()
112
+ };
113
+ } // 获取容器尺寸
114
+
115
+ }, {
116
+ key: "getContainerSize",
117
+ value: function getContainerSize() {
118
+ return this.containerSize;
119
+ } // 在图层添加单个marker
120
+
121
+ }, {
122
+ key: "addMarker",
123
+ value: function addMarker(marker) {
124
+ var cluster = this.markerLayerOption.cluster;
125
+ marker.getMarkerLayerContainerSize = this.getContainerSize.bind(this);
126
+
127
+ if (cluster) {
128
+ this.addPoint(marker, this.markers.length);
129
+
130
+ if (this.mapsService) {
131
+ // 在新增 marker 的时候需要更新聚合信息(哪怕此时的 zoom 没有发生变化)
132
+ var zoom = this.mapsService.getZoom();
133
+ var bbox = this.mapsService.getBounds();
134
+ this.bbox = (0, _l7Utils.padBounds)(bbox, 0.5);
135
+ this.zoom = Math.floor(zoom);
136
+ this.getClusterMarker(this.bbox, this.zoom);
137
+ }
138
+ }
139
+
140
+ this.markers.push(marker);
141
+ }
142
+ }, {
143
+ key: "removeMarker",
144
+ value: function removeMarker(marker) {
145
+ this.markers.indexOf(marker);
146
+ var markerIndex = this.markers.indexOf(marker);
147
+
148
+ if (markerIndex > -1) {
149
+ this.markers.splice(markerIndex, 1);
150
+ }
151
+ }
152
+ /**
153
+ * 隐藏 marker 在每个 marker 上单独修改属性而不是在 markerContainer 上修改(在 markerContainer 修改会有用户在场景加载完之前调用失败的问题)
154
+ */
155
+
156
+ }, {
157
+ key: "hide",
158
+ value: function hide() {
159
+ this.markers.map(function (m) {
160
+ m.getElement().style.opacity = '0';
161
+ });
162
+ this.clusterMarkers.map(function (m) {
163
+ m.getElement().style.opacity = '0';
164
+ });
165
+ }
166
+ /**
167
+ * 显示 marker
168
+ */
169
+
170
+ }, {
171
+ key: "show",
172
+ value: function show() {
173
+ this.markers.map(function (m) {
174
+ m.getElement().style.opacity = '1';
175
+ });
176
+ this.clusterMarkers.map(function (m) {
177
+ m.getElement().style.opacity = '1';
178
+ });
179
+ } // 返回当下的markers数据,有聚合图时返回聚合的marker列表,否则返回原始maerker列表
180
+
181
+ }, {
182
+ key: "getMarkers",
183
+ value: function getMarkers() {
184
+ var cluster = this.markerLayerOption.cluster;
185
+ return cluster ? this.clusterMarkers : this.markers;
186
+ } // 批量添加marker到scene
187
+
188
+ }, {
189
+ key: "addMarkers",
190
+ value: function addMarkers() {
191
+ var _this2 = this;
192
+
193
+ this.getMarkers().forEach(function (marker) {
194
+ marker.addTo(_this2.scene);
195
+ });
196
+ } // 清除图层里的marker
197
+
198
+ }, {
199
+ key: "clear",
200
+ value: function clear() {
201
+ this.markers.forEach(function (marker) {
202
+ marker.remove();
203
+ });
204
+ this.clusterMarkers.forEach(function (clusterMarker) {
205
+ clusterMarker.remove();
206
+ });
207
+ this.markers = [];
208
+ this.points = [];
209
+ this.clusterMarkers = [];
210
+ }
211
+ }, {
212
+ key: "destroy",
213
+ value: function destroy() {
214
+ this.clear();
215
+ this.removeAllListeners();
216
+ this.mapsService.off('camerachange', this.update);
217
+ this.mapsService.off('viewchange', this.update);
218
+ this.mapsService.off('camerachange', this.setContainerSize.bind(this));
219
+ this.mapsService.off('viewchange', this.setContainerSize.bind(this));
220
+ } // 将marker数据保存在point中
221
+
222
+ }, {
223
+ key: "addPoint",
224
+ value: function addPoint(marker, id) {
225
+ var _marker$getLnglat = marker.getLnglat(),
226
+ lng = _marker$getLnglat.lng,
227
+ lat = _marker$getLnglat.lat;
228
+
229
+ var feature = {
230
+ geometry: {
231
+ type: 'Point',
232
+ coordinates: [lng, lat]
233
+ },
234
+ properties: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, marker.getExtData()), {}, {
235
+ marker_id: id
236
+ })
237
+ };
238
+ this.points.push(feature);
239
+
240
+ if (this.clusterIndex) {
241
+ // 在新增点的时候需要更新 cluster 的数据
242
+ this.clusterIndex.load(this.points);
243
+ }
244
+ }
245
+ }, {
246
+ key: "initCluster",
247
+ value: function initCluster() {
248
+ if (!this.markerLayerOption.cluster) {
249
+ return;
250
+ }
251
+
252
+ var _this$markerLayerOpti2 = this.markerLayerOption.clusterOption,
253
+ radius = _this$markerLayerOpti2.radius,
254
+ _this$markerLayerOpti3 = _this$markerLayerOpti2.minZoom,
255
+ minZoom = _this$markerLayerOpti3 === void 0 ? 0 : _this$markerLayerOpti3,
256
+ maxZoom = _this$markerLayerOpti2.maxZoom;
257
+ this.clusterIndex = new _supercluster.default({
258
+ radius: radius,
259
+ minZoom: minZoom,
260
+ maxZoom: maxZoom
261
+ }); // @ts-ignore
262
+
263
+ this.clusterIndex.load(this.points);
264
+ }
265
+ }, {
266
+ key: "getClusterMarker",
267
+ value: function getClusterMarker(viewBounds, zoom) {
268
+ var _this3 = this;
269
+
270
+ var viewBBox = viewBounds[0].concat(viewBounds[1]);
271
+ var clusterPoint = this.clusterIndex.getClusters(viewBBox, zoom);
272
+ this.clusterMarkers.forEach(function (marker) {
273
+ marker.remove();
274
+ });
275
+ this.clusterMarkers = [];
276
+ clusterPoint.forEach(function (feature) {
277
+ var _feature$properties;
278
+
279
+ var _this3$markerLayerOpt = _this3.markerLayerOption.clusterOption,
280
+ field = _this3$markerLayerOpt.field,
281
+ method = _this3$markerLayerOpt.method; // 处理聚合数据
282
+
283
+ if ((_feature$properties = feature.properties) !== null && _feature$properties !== void 0 && _feature$properties.cluster_id) {
284
+ var _feature$properties2;
285
+
286
+ var clusterData = _this3.getLeaves((_feature$properties2 = feature.properties) === null || _feature$properties2 === void 0 ? void 0 : _feature$properties2.cluster_id);
287
+
288
+ feature.properties.clusterData = clusterData;
289
+
290
+ if (field && method) {
291
+ var columnData = clusterData === null || clusterData === void 0 ? void 0 : clusterData.map(function (item) {
292
+ var data = (0, _defineProperty2.default)({}, field, item.properties[field]);
293
+ return data;
294
+ });
295
+
296
+ var column = _l7Utils.Satistics.getColumn(columnData, field);
297
+
298
+ var stat = _l7Utils.Satistics.getSatByColumn(method, column);
299
+
300
+ var fieldName = 'point_' + method;
301
+ feature.properties[fieldName] = stat.toFixed(2);
302
+ }
303
+ }
304
+
305
+ var marker = _this3.clusterMarker(feature);
306
+
307
+ _this3.clusterMarkers.push(marker);
308
+
309
+ marker.addTo(_this3.scene);
310
+ });
311
+ }
312
+ }, {
313
+ key: "getLeaves",
314
+ value: function getLeaves(clusterId) {
315
+ var limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Infinity;
316
+ var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
317
+
318
+ if (!clusterId) {
319
+ return null;
320
+ }
321
+
322
+ return this.clusterIndex.getLeaves(clusterId, limit, offset);
323
+ }
324
+ }, {
325
+ key: "clusterMarker",
326
+ value: function clusterMarker(feature) {
327
+ var clusterOption = this.markerLayerOption.clusterOption;
328
+ var _ref = clusterOption,
329
+ _ref$element = _ref.element,
330
+ element = _ref$element === void 0 ? this.generateElement.bind(this) : _ref$element;
331
+ var marker = new _marker.default({
332
+ element: element(feature)
333
+ }).setLnglat({
334
+ lng: feature.geometry.coordinates[0],
335
+ lat: feature.geometry.coordinates[1]
336
+ });
337
+ return marker;
338
+ }
339
+ }, {
340
+ key: "normalMarker",
341
+ value: function normalMarker(feature) {
342
+ var marker_id = feature.properties.marker_id;
343
+ return this.markers[marker_id];
344
+ }
345
+ }, {
346
+ key: "update",
347
+ value: function update() {
348
+ if (!this.mapsService) return; // 当图层中无marker时,无需更新
349
+
350
+ if (this.markers.length === 0) return;
351
+ var zoom = this.mapsService.getZoom();
352
+ var bbox = this.mapsService.getBounds();
353
+
354
+ if (!this.bbox || Math.abs(zoom - this.zoom) >= 1 || !(0, _l7Utils.boundsContains)(this.bbox, bbox)) {
355
+ this.bbox = (0, _l7Utils.padBounds)(bbox, 0.5);
356
+ this.zoom = Math.floor(zoom);
357
+ this.getClusterMarker(this.bbox, this.zoom);
358
+ }
359
+ }
360
+ }, {
361
+ key: "generateElement",
362
+ value: function generateElement(feature) {
363
+ var el = _l7Utils.DOM.create('div', 'l7-marker-cluster');
364
+
365
+ var label = _l7Utils.DOM.create('div', '', el);
366
+
367
+ var span = _l7Utils.DOM.create('span', '', label);
368
+
369
+ var _this$markerLayerOpti4 = this.markerLayerOption.clusterOption,
370
+ field = _this$markerLayerOpti4.field,
371
+ method = _this$markerLayerOpti4.method;
372
+ feature.properties.point_count = feature.properties.point_count || 1;
373
+ var text = field && method ? feature.properties['point_' + method] || feature.properties[field] : feature.properties.point_count;
374
+ span.textContent = text;
375
+ return el;
376
+ }
377
+ }]);
378
+ return MarkerLayer;
379
+ }(_eventemitter.EventEmitter);
380
+
381
+ exports.default = MarkerLayer;