@vortex-ui/env-puzzle 2.0.0-beta.2 → 2.0.0-beta.3
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/b-map/b-map.d.ts +63 -0
- package/lib/b-map/b-map.js +296 -0
- package/lib/b-map/b-map.js.map +1 -0
- package/lib/b-map/custom-overlay.d.ts +13 -0
- package/lib/b-map/custom-overlay.js +84 -0
- package/lib/b-map/custom-overlay.js.map +1 -0
- package/lib/b-map/drawing.d.ts +14 -0
- package/lib/b-map/drawing.js +73 -0
- package/lib/b-map/drawing.js.map +1 -0
- package/lib/b-map/index.d.ts +17 -0
- package/lib/b-map/index.js +35 -0
- package/lib/b-map/index.js.map +1 -0
- package/lib/b-map/js/marker-clusterer.js +158 -42
- package/lib/b-map/js/marker-clusterer.js.map +1 -1
- package/lib/b-map/lushu.d.ts +16 -0
- package/lib/b-map/lushu.js +78 -0
- package/lib/b-map/lushu.js.map +1 -0
- package/lib/b-map/marker-clusterer.d.ts +29 -0
- package/lib/b-map/marker-clusterer.js +52 -0
- package/lib/b-map/marker-clusterer.js.map +1 -0
- package/lib/b-map/marker.d.ts +45 -0
- package/lib/b-map/marker.js +184 -0
- package/lib/b-map/marker.js.map +1 -0
- package/lib/b-map/polygon.d.ts +54 -0
- package/lib/b-map/polygon.js +44 -0
- package/lib/b-map/polygon.js.map +1 -0
- package/lib/b-map/style/css.js +4 -0
- package/lib/b-map/style/css.js.map +1 -0
- package/lib/b-map/style/index.d.ts +1 -0
- package/lib/b-map/style/index.js +4 -0
- package/lib/b-map/style/index.js.map +1 -0
- package/lib/create-modal/create-modal.d.ts +31 -0
- package/lib/create-modal/create-modal.js +653 -0
- package/lib/create-modal/create-modal.js.map +1 -0
- package/lib/create-modal/index.d.ts +3 -0
- package/lib/create-modal/index.js +14 -0
- package/lib/create-modal/index.js.map +1 -0
- package/lib/create-modal/style/css.js +22 -0
- package/lib/create-modal/style/css.js.map +1 -0
- package/lib/create-modal/style/index.d.ts +10 -0
- package/lib/create-modal/style/index.js +22 -0
- package/lib/create-modal/style/index.js.map +1 -0
- package/lib/import-modal/import-modal.d.ts +23 -0
- package/lib/import-modal/import-modal.js +358 -0
- package/lib/import-modal/import-modal.js.map +1 -0
- package/lib/import-modal/index.d.ts +2 -0
- package/lib/import-modal/index.js +14 -0
- package/lib/import-modal/index.js.map +1 -0
- package/lib/import-modal/style/css.js +14 -0
- package/lib/import-modal/style/css.js.map +1 -0
- package/lib/import-modal/style/index.d.ts +6 -0
- package/lib/import-modal/style/index.js +14 -0
- package/lib/import-modal/style/index.js.map +1 -0
- package/lib/index.d.ts +13 -0
- package/lib/index.js +104 -0
- package/lib/index.js.map +1 -0
- package/lib/interface/index.d.ts +7 -0
- package/lib/interface/index.js +6 -0
- package/lib/interface/index.js.map +1 -0
- package/lib/mapv-Layer/Function.d.ts +1 -0
- package/lib/mapv-Layer/Function.js +2 -0
- package/lib/mapv-Layer/Function.js.map +1 -1
- package/lib/mapv-Layer/index.d.ts +2 -0
- package/lib/mapv-Layer/index.js +14 -0
- package/lib/mapv-Layer/index.js.map +1 -0
- package/lib/mapv-Layer/mapv-Layer.d.ts +7 -0
- package/lib/mapv-Layer/mapv-Layer.js +117 -0
- package/lib/mapv-Layer/mapv-Layer.js.map +1 -0
- package/lib/mapv-Layer/style/css.js +2 -0
- package/lib/mapv-Layer/style/css.js.map +1 -0
- package/lib/mapv-Layer/style/index.d.ts +1 -0
- package/lib/mapv-Layer/style/index.js +2 -0
- package/lib/mapv-Layer/style/index.js.map +1 -0
- package/lib/percent/images/icon-arrow.png +0 -0
- package/lib/percent/index.d.ts +8 -0
- package/lib/percent/index.js +18 -0
- package/lib/percent/index.js.map +1 -0
- package/lib/percent/interface.d.ts +6 -0
- package/lib/percent/interface.js +6 -0
- package/lib/percent/interface.js.map +1 -0
- package/lib/percent/line-percent.d.ts +11 -0
- package/lib/percent/line-percent.js +114 -0
- package/lib/percent/line-percent.js.map +1 -0
- package/lib/percent/percent.d.ts +10 -0
- package/lib/percent/percent.js +139 -0
- package/lib/percent/percent.js.map +1 -0
- package/lib/percent/style/css.js +4 -0
- package/lib/percent/style/css.js.map +1 -0
- package/lib/percent/style/index.d.ts +1 -0
- package/lib/percent/style/index.js +4 -0
- package/lib/percent/style/index.js.map +1 -0
- package/lib/scroll/index.d.ts +2 -0
- package/lib/scroll/index.js +14 -0
- package/lib/scroll/index.js.map +1 -0
- package/lib/scroll/scroll.d.ts +4 -0
- package/lib/scroll/scroll.js +105 -0
- package/lib/scroll/scroll.js.map +1 -0
- package/lib/scroll/style/css.js +4 -0
- package/lib/scroll/style/css.js.map +1 -0
- package/lib/scroll/style/index.d.ts +1 -0
- package/lib/scroll/style/index.js +4 -0
- package/lib/scroll/style/index.js.map +1 -0
- package/lib/scroll-select/index.d.ts +2 -0
- package/lib/scroll-select/index.js +14 -0
- package/lib/scroll-select/index.js.map +1 -0
- package/lib/scroll-select/scrollSelect.d.ts +2 -0
- package/lib/scroll-select/scrollSelect.js +323 -0
- package/lib/scroll-select/scrollSelect.js.map +1 -0
- package/lib/scroll-select/style/css.js +6 -0
- package/lib/scroll-select/style/css.js.map +1 -0
- package/lib/scroll-select/style/index.d.ts +2 -0
- package/lib/scroll-select/style/index.js +6 -0
- package/lib/scroll-select/style/index.js.map +1 -0
- package/lib/table/index.d.ts +2 -0
- package/lib/table/index.js +14 -0
- package/lib/table/index.js.map +1 -0
- package/lib/table/style/css.js +6 -0
- package/lib/table/style/css.js.map +1 -0
- package/lib/table/style/index.d.ts +2 -0
- package/lib/table/style/index.js +6 -0
- package/lib/table/style/index.js.map +1 -0
- package/lib/table/table.d.ts +17 -0
- package/lib/table/table.js +162 -0
- package/lib/table/table.js.map +1 -0
- package/lib/template/action.d.ts +57 -0
- package/lib/template/action.js +265 -0
- package/lib/template/action.js.map +1 -0
- package/lib/template/card-table.d.ts +35 -0
- package/lib/template/card-table.js +193 -0
- package/lib/template/card-table.js.map +1 -0
- package/lib/template/card.d.ts +15 -0
- package/lib/template/card.js +116 -0
- package/lib/template/card.js.map +1 -0
- package/lib/template/check-row.d.ts +6 -0
- package/lib/template/check-row.js +39 -0
- package/lib/template/check-row.js.map +1 -0
- package/lib/template/field.d.ts +6 -0
- package/lib/template/field.js +50 -0
- package/lib/template/field.js.map +1 -0
- package/lib/template/filter.d.ts +13 -0
- package/lib/template/filter.js +146 -0
- package/lib/template/filter.js.map +1 -0
- package/lib/template/icon.d.ts +6 -0
- package/lib/template/icon.js +33 -0
- package/lib/template/icon.js.map +1 -0
- package/lib/template/index.d.ts +13 -0
- package/lib/template/index.js +24 -0
- package/lib/template/index.js.map +1 -0
- package/lib/template/interface.d.ts +4 -0
- package/lib/template/interface.js +6 -0
- package/lib/template/interface.js.map +1 -0
- package/lib/template/renderColumnButtons.d.ts +2 -0
- package/lib/template/renderColumnButtons.js +173 -0
- package/lib/template/renderColumnButtons.js.map +1 -0
- package/lib/template/style/css.js +40 -0
- package/lib/template/style/css.js.map +1 -0
- package/lib/template/style/index.d.ts +19 -0
- package/lib/template/style/index.js +40 -0
- package/lib/template/style/index.js.map +1 -0
- package/lib/template/table.d.ts +44 -0
- package/lib/template/table.js +103 -0
- package/lib/template/table.js.map +1 -0
- package/lib/template/template.d.ts +84 -0
- package/lib/template/template.js +610 -0
- package/lib/template/template.js.map +1 -0
- package/lib/template/toolbar.d.ts +16 -0
- package/lib/template/toolbar.js +102 -0
- package/lib/template/toolbar.js.map +1 -0
- package/lib/to-map/container.d.ts +28 -0
- package/lib/to-map/container.js +295 -0
- package/lib/to-map/container.js.map +1 -0
- package/lib/to-map/draw-area.d.ts +6 -0
- package/lib/to-map/draw-area.js +66 -0
- package/lib/to-map/draw-area.js.map +1 -0
- package/lib/to-map/images/icon-area.png +0 -0
- package/lib/to-map/images/icon-picker.png +0 -0
- package/lib/to-map/index.d.ts +8 -0
- package/lib/to-map/index.js +18 -0
- package/lib/to-map/index.js.map +1 -0
- package/lib/to-map/style/css.js +6 -0
- package/lib/to-map/style/css.js.map +1 -0
- package/lib/to-map/style/index.d.ts +2 -0
- package/lib/to-map/style/index.js +6 -0
- package/lib/to-map/style/index.js.map +1 -0
- package/lib/to-map/to-map.d.ts +12 -0
- package/lib/to-map/to-map.js +120 -0
- package/lib/to-map/to-map.js.map +1 -0
- package/lib/upload/index.d.ts +2 -0
- package/lib/upload/index.js +14 -0
- package/lib/upload/index.js.map +1 -0
- package/lib/upload/style/css.js +10 -0
- package/lib/upload/style/css.js.map +1 -0
- package/lib/upload/style/index.d.ts +4 -0
- package/lib/upload/style/index.js +10 -0
- package/lib/upload/style/index.js.map +1 -0
- package/lib/upload/upload.d.ts +12 -0
- package/lib/upload/upload.js +445 -0
- package/lib/upload/upload.js.map +1 -0
- package/lib/use-simple-res/demos/index.d.ts +2 -0
- package/lib/use-simple-res/demos/index.js +116 -0
- package/lib/use-simple-res/demos/index.js.map +1 -0
- package/lib/use-simple-res/index.d.ts +28 -0
- package/lib/use-simple-res/index.js +99 -0
- package/lib/use-simple-res/index.js.map +1 -0
- package/lib/use-simple-res/style/css.js +4 -0
- package/lib/use-simple-res/style/css.js.map +1 -0
- package/lib/use-simple-res/style/index.d.ts +1 -0
- package/lib/use-simple-res/style/index.js +4 -0
- package/lib/use-simple-res/style/index.js.map +1 -0
- package/lib/utils/dom-util.d.ts +19 -0
- package/lib/utils/dom-util.js +98 -0
- package/lib/utils/dom-util.js.map +1 -0
- package/lib/utils/request-util.d.ts +42 -0
- package/lib/utils/request-util.js +191 -0
- package/lib/utils/request-util.js.map +1 -0
- package/lib/utils/string-util.d.ts +11 -0
- package/lib/utils/string-util.js +47 -0
- package/lib/utils/string-util.js.map +1 -0
- package/lib/view-modal/index.d.ts +2 -0
- package/lib/view-modal/index.js +14 -0
- package/lib/view-modal/index.js.map +1 -0
- package/lib/view-modal/style/css.js +16 -0
- package/lib/view-modal/style/css.js.map +1 -0
- package/lib/view-modal/style/index.d.ts +8 -0
- package/lib/view-modal/style/index.js +16 -0
- package/lib/view-modal/style/index.js.map +1 -0
- package/lib/view-modal/view-modal.d.ts +8 -0
- package/lib/view-modal/view-modal.js +208 -0
- package/lib/view-modal/view-modal.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
/* eslint-disable*/
|
|
4
|
+
|
|
4
5
|
/**
|
|
5
6
|
* @fileoverview MarkerClusterer标记聚合器用来解决加载大量点要素到地图上产生覆盖现象的问题,并提高性能。
|
|
6
7
|
* 主入口类是<a href="symbols/BMapLib.MarkerClusterer.html">MarkerClusterer</a>,
|
|
@@ -14,6 +15,7 @@
|
|
|
14
15
|
* @namespace BMap的所有library类均放在BMapLib命名空间下
|
|
15
16
|
*/
|
|
16
17
|
var BMapLib = window.BMapLib = BMapLib || {};
|
|
18
|
+
|
|
17
19
|
(function () {
|
|
18
20
|
/**
|
|
19
21
|
* 获取一个扩展的视图范围,把上下左右都扩大一样的像素值。
|
|
@@ -35,13 +37,14 @@ var BMapLib = window.BMapLib = BMapLib || {};
|
|
|
35
37
|
var newSW = map.pixelToPoint(pixelSW);
|
|
36
38
|
return new BMap.Bounds(newSW, newNE);
|
|
37
39
|
};
|
|
38
|
-
|
|
39
40
|
/**
|
|
40
41
|
* 按照百度地图支持的世界范围对bounds进行边界处理
|
|
41
42
|
* @param {BMap.Bounds} bounds BMap.Bounds的实例化对象
|
|
42
43
|
*
|
|
43
44
|
* @return {BMap.Bounds} 返回不越界的视图范围
|
|
44
45
|
*/
|
|
46
|
+
|
|
47
|
+
|
|
45
48
|
var cutBoundsInRange = function cutBoundsInRange(bounds) {
|
|
46
49
|
var maxX = getRange(bounds.getNorthEast().lng, -180, 180);
|
|
47
50
|
var minX = getRange(bounds.getSouthWest().lng, -180, 180);
|
|
@@ -49,7 +52,6 @@ var BMapLib = window.BMapLib = BMapLib || {};
|
|
|
49
52
|
var minY = getRange(bounds.getSouthWest().lat, -74, 74);
|
|
50
53
|
return new BMap.Bounds(new BMap.Point(minX, minY), new BMap.Point(maxX, maxY));
|
|
51
54
|
};
|
|
52
|
-
|
|
53
55
|
/**
|
|
54
56
|
* 对单个值进行边界处理。
|
|
55
57
|
* @param {Number} i 要处理的数值
|
|
@@ -58,22 +60,24 @@ var BMapLib = window.BMapLib = BMapLib || {};
|
|
|
58
60
|
*
|
|
59
61
|
* @return {Number} 返回不越界的数值
|
|
60
62
|
*/
|
|
63
|
+
|
|
64
|
+
|
|
61
65
|
var getRange = function getRange(i, mix, max) {
|
|
62
66
|
mix && (i = Math.max(i, mix));
|
|
63
67
|
max && (i = Math.min(i, max));
|
|
64
68
|
return i;
|
|
65
69
|
};
|
|
66
|
-
|
|
67
70
|
/**
|
|
68
71
|
* 判断给定的对象是否为数组
|
|
69
72
|
* @param {Object} source 要测试的对象
|
|
70
73
|
*
|
|
71
74
|
* @return {Boolean} 如果是数组返回true,否则返回false
|
|
72
75
|
*/
|
|
76
|
+
|
|
77
|
+
|
|
73
78
|
var isArray = function isArray(source) {
|
|
74
79
|
return '[object Array]' === Object.prototype.toString.call(source);
|
|
75
80
|
};
|
|
76
|
-
|
|
77
81
|
/**
|
|
78
82
|
* 返回item在source中的索引位置
|
|
79
83
|
* @param {Object} item 要测试的对象
|
|
@@ -81,8 +85,11 @@ var BMapLib = window.BMapLib = BMapLib || {};
|
|
|
81
85
|
*
|
|
82
86
|
* @return {Number} 如果在数组内,返回索引,否则返回-1
|
|
83
87
|
*/
|
|
88
|
+
|
|
89
|
+
|
|
84
90
|
var indexOf = function indexOf(item, source) {
|
|
85
91
|
var index = -1;
|
|
92
|
+
|
|
86
93
|
if (isArray(source)) {
|
|
87
94
|
if (source.indexOf) {
|
|
88
95
|
index = source.indexOf(item);
|
|
@@ -95,12 +102,14 @@ var BMapLib = window.BMapLib = BMapLib || {};
|
|
|
95
102
|
}
|
|
96
103
|
}
|
|
97
104
|
}
|
|
105
|
+
|
|
98
106
|
return index;
|
|
99
107
|
};
|
|
100
|
-
|
|
101
108
|
/**
|
|
102
109
|
*@exports MarkerClusterer as BMapLib.MarkerClusterer
|
|
103
110
|
*/
|
|
111
|
+
|
|
112
|
+
|
|
104
113
|
var MarkerClusterer =
|
|
105
114
|
/**
|
|
106
115
|
* MarkerClusterer
|
|
@@ -119,6 +128,7 @@ var BMapLib = window.BMapLib = BMapLib || {};
|
|
|
119
128
|
if (!map) {
|
|
120
129
|
return;
|
|
121
130
|
}
|
|
131
|
+
|
|
122
132
|
this._map = map;
|
|
123
133
|
this._markers = [];
|
|
124
134
|
this._clusters = [];
|
|
@@ -127,321 +137,392 @@ var BMapLib = window.BMapLib = BMapLib || {};
|
|
|
127
137
|
this._maxZoom = opts['maxZoom'] || 18;
|
|
128
138
|
this._minClusterSize = opts['minClusterSize'] || 2;
|
|
129
139
|
this._isAverageCenter = false;
|
|
140
|
+
|
|
130
141
|
if (opts['isAverageCenter'] != undefined) {
|
|
131
142
|
this._isAverageCenter = opts['isAverageCenter'];
|
|
132
143
|
}
|
|
144
|
+
|
|
133
145
|
this._styles = opts['styles'] || [];
|
|
134
146
|
var that = this;
|
|
147
|
+
|
|
135
148
|
this._map.addEventListener('zoomend', function () {
|
|
136
149
|
that._redraw();
|
|
137
150
|
});
|
|
151
|
+
|
|
138
152
|
this._map.addEventListener('moveend', function () {
|
|
139
153
|
that._redraw();
|
|
140
154
|
});
|
|
155
|
+
|
|
141
156
|
var mkrs = opts['markers'];
|
|
142
157
|
isArray(mkrs) && this.addMarkers(mkrs);
|
|
143
158
|
};
|
|
144
|
-
|
|
145
159
|
/**
|
|
146
160
|
* 添加要聚合的标记数组。
|
|
147
161
|
* @param {Array<Marker>} markers 要聚合的标记数组
|
|
148
162
|
*
|
|
149
163
|
* @return 无返回值。
|
|
150
164
|
*/
|
|
165
|
+
|
|
166
|
+
|
|
151
167
|
MarkerClusterer.prototype.addMarkers = function (markers) {
|
|
152
168
|
for (var i = 0, len = markers.length; i < len; i++) {
|
|
153
169
|
this._pushMarkerTo(markers[i]);
|
|
154
170
|
}
|
|
171
|
+
|
|
155
172
|
this._createClusters();
|
|
156
173
|
};
|
|
157
|
-
|
|
158
174
|
/**
|
|
159
175
|
* 把一个标记添加到要聚合的标记数组中
|
|
160
176
|
* @param {BMap.Marker} marker 要添加的标记
|
|
161
177
|
*
|
|
162
178
|
* @return 无返回值。
|
|
163
179
|
*/
|
|
180
|
+
|
|
181
|
+
|
|
164
182
|
MarkerClusterer.prototype._pushMarkerTo = function (marker) {
|
|
165
183
|
var index = indexOf(marker, this._markers);
|
|
184
|
+
|
|
166
185
|
if (index === -1) {
|
|
167
186
|
marker.isInCluster = false;
|
|
187
|
+
|
|
168
188
|
this._markers.push(marker); //Marker拖放后enableDragging不做变化,忽略
|
|
189
|
+
|
|
169
190
|
}
|
|
170
191
|
};
|
|
171
|
-
|
|
172
192
|
/**
|
|
173
193
|
* 添加一个聚合的标记。
|
|
174
194
|
* @param {BMap.Marker} marker 要聚合的单个标记。
|
|
175
195
|
* @return 无返回值。
|
|
176
196
|
*/
|
|
197
|
+
|
|
198
|
+
|
|
177
199
|
MarkerClusterer.prototype.addMarker = function (marker) {
|
|
178
200
|
this._pushMarkerTo(marker);
|
|
201
|
+
|
|
179
202
|
this._createClusters();
|
|
180
203
|
};
|
|
181
|
-
|
|
182
204
|
/**
|
|
183
205
|
* 根据所给定的标记,创建聚合点,并且遍历所有聚合点
|
|
184
206
|
* @return 无返回值
|
|
185
207
|
*/
|
|
208
|
+
|
|
209
|
+
|
|
186
210
|
MarkerClusterer.prototype._createClusters = function () {
|
|
187
211
|
var mapBounds = this._map.getBounds();
|
|
212
|
+
|
|
188
213
|
var extendedBounds = getExtendedBounds(this._map, mapBounds, this._gridSize);
|
|
214
|
+
|
|
189
215
|
for (var i = 0, marker; marker = this._markers[i]; i++) {
|
|
190
216
|
if (!marker.isInCluster && extendedBounds.containsPoint(marker.getPosition())) {
|
|
191
217
|
this._addToClosestCluster(marker);
|
|
192
218
|
}
|
|
193
219
|
}
|
|
220
|
+
|
|
194
221
|
var len = this._markers.length;
|
|
222
|
+
|
|
195
223
|
for (var i = 0; i < len; i++) {
|
|
196
224
|
if (this._clusters[i]) {
|
|
197
225
|
this._clusters[i].render();
|
|
198
226
|
}
|
|
199
227
|
}
|
|
200
228
|
};
|
|
201
|
-
|
|
202
229
|
/**
|
|
203
230
|
* 根据标记的位置,把它添加到最近的聚合中
|
|
204
231
|
* @param {BMap.Marker} marker 要进行聚合的单个标记
|
|
205
232
|
*
|
|
206
233
|
* @return 无返回值。
|
|
207
234
|
*/
|
|
235
|
+
|
|
236
|
+
|
|
208
237
|
MarkerClusterer.prototype._addToClosestCluster = function (marker) {
|
|
209
238
|
var distance = 4000000;
|
|
210
239
|
var clusterToAddTo = null;
|
|
211
240
|
var position = marker.getPosition();
|
|
241
|
+
|
|
212
242
|
for (var i = 0, cluster; cluster = this._clusters[i]; i++) {
|
|
213
243
|
var center = cluster.getCenter();
|
|
244
|
+
|
|
214
245
|
if (center) {
|
|
215
246
|
var d = this._map.getDistance(center, marker.getPosition());
|
|
247
|
+
|
|
216
248
|
if (d < distance) {
|
|
217
249
|
distance = d;
|
|
218
250
|
clusterToAddTo = cluster;
|
|
219
251
|
}
|
|
220
252
|
}
|
|
221
253
|
}
|
|
254
|
+
|
|
222
255
|
if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {
|
|
223
256
|
clusterToAddTo.addMarker(marker);
|
|
224
257
|
} else {
|
|
225
258
|
var cluster = new Cluster(this);
|
|
226
259
|
cluster.addMarker(marker);
|
|
260
|
+
|
|
227
261
|
this._clusters.push(cluster);
|
|
228
262
|
}
|
|
229
263
|
};
|
|
230
|
-
|
|
231
264
|
/**
|
|
232
265
|
* 清除上一次的聚合的结果
|
|
233
266
|
* @return 无返回值。
|
|
234
267
|
*/
|
|
268
|
+
|
|
269
|
+
|
|
235
270
|
MarkerClusterer.prototype._clearLastClusters = function () {
|
|
236
271
|
for (var i = 0, cluster; cluster = this._clusters[i]; i++) {
|
|
237
272
|
cluster.remove();
|
|
238
273
|
}
|
|
274
|
+
|
|
239
275
|
this._clusters = []; //置空Cluster数组
|
|
276
|
+
|
|
240
277
|
this._removeMarkersFromCluster(); //把Marker的cluster标记设为false
|
|
241
|
-
};
|
|
242
278
|
|
|
279
|
+
};
|
|
243
280
|
/**
|
|
244
281
|
* 清除某个聚合中的所有标记
|
|
245
282
|
* @return 无返回值
|
|
246
283
|
*/
|
|
284
|
+
|
|
285
|
+
|
|
247
286
|
MarkerClusterer.prototype._removeMarkersFromCluster = function () {
|
|
248
287
|
for (var i = 0, marker; marker = this._markers[i]; i++) {
|
|
249
288
|
marker.isInCluster = false;
|
|
250
289
|
}
|
|
251
290
|
};
|
|
252
|
-
|
|
253
291
|
/**
|
|
254
292
|
* 把所有的标记从地图上清除
|
|
255
293
|
* @return 无返回值
|
|
256
294
|
*/
|
|
295
|
+
|
|
296
|
+
|
|
257
297
|
MarkerClusterer.prototype._removeMarkersFromMap = function () {
|
|
258
298
|
for (var i = 0, marker; marker = this._markers[i]; i++) {
|
|
259
299
|
marker.isInCluster = false;
|
|
260
300
|
tmplabel = marker.getLabel();
|
|
301
|
+
|
|
261
302
|
this._map.removeOverlay(marker);
|
|
303
|
+
|
|
262
304
|
marker.setLabel(tmplabel);
|
|
263
305
|
}
|
|
264
306
|
};
|
|
265
|
-
|
|
266
307
|
/**
|
|
267
308
|
* 删除单个标记
|
|
268
309
|
* @param {BMap.Marker} marker 需要被删除的marker
|
|
269
310
|
*
|
|
270
311
|
* @return {Boolean} 删除成功返回true,否则返回false
|
|
271
312
|
*/
|
|
313
|
+
|
|
314
|
+
|
|
272
315
|
MarkerClusterer.prototype._removeMarker = function (marker) {
|
|
273
316
|
var index = indexOf(marker, this._markers);
|
|
317
|
+
|
|
274
318
|
if (index === -1) {
|
|
275
319
|
return false;
|
|
276
320
|
}
|
|
321
|
+
|
|
277
322
|
tmplabel = marker.getLabel();
|
|
323
|
+
|
|
278
324
|
this._map.removeOverlay(marker);
|
|
325
|
+
|
|
279
326
|
marker.setLabel(tmplabel);
|
|
327
|
+
|
|
280
328
|
this._markers.splice(index, 1);
|
|
329
|
+
|
|
281
330
|
return true;
|
|
282
331
|
};
|
|
283
|
-
|
|
284
332
|
/**
|
|
285
333
|
* 删除单个标记
|
|
286
334
|
* @param {BMap.Marker} marker 需要被删除的marker
|
|
287
335
|
*
|
|
288
336
|
* @return {Boolean} 删除成功返回true,否则返回false
|
|
289
337
|
*/
|
|
338
|
+
|
|
339
|
+
|
|
290
340
|
MarkerClusterer.prototype.removeMarker = function (marker) {
|
|
291
341
|
var success = this._removeMarker(marker);
|
|
342
|
+
|
|
292
343
|
if (success) {
|
|
293
344
|
this._clearLastClusters();
|
|
345
|
+
|
|
294
346
|
this._createClusters();
|
|
295
347
|
}
|
|
348
|
+
|
|
296
349
|
return success;
|
|
297
350
|
};
|
|
298
|
-
|
|
299
351
|
/**
|
|
300
352
|
* 删除一组标记
|
|
301
353
|
* @param {Array<BMap.Marker>} markers 需要被删除的marker数组
|
|
302
354
|
*
|
|
303
355
|
* @return {Boolean} 删除成功返回true,否则返回false
|
|
304
356
|
*/
|
|
357
|
+
|
|
358
|
+
|
|
305
359
|
MarkerClusterer.prototype.removeMarkers = function (markers) {
|
|
306
360
|
var success = false;
|
|
361
|
+
|
|
307
362
|
for (var i = 0; i < markers.length; i++) {
|
|
308
363
|
var r = this._removeMarker(markers[i]);
|
|
364
|
+
|
|
309
365
|
success = success || r;
|
|
310
366
|
}
|
|
367
|
+
|
|
311
368
|
if (success) {
|
|
312
369
|
this._clearLastClusters();
|
|
370
|
+
|
|
313
371
|
this._createClusters();
|
|
314
372
|
}
|
|
373
|
+
|
|
315
374
|
return success;
|
|
316
375
|
};
|
|
317
|
-
|
|
318
376
|
/**
|
|
319
377
|
* 从地图上彻底清除所有的标记
|
|
320
378
|
* @return 无返回值
|
|
321
379
|
*/
|
|
380
|
+
|
|
381
|
+
|
|
322
382
|
MarkerClusterer.prototype.clearMarkers = function () {
|
|
323
383
|
this._clearLastClusters();
|
|
384
|
+
|
|
324
385
|
this._removeMarkersFromMap();
|
|
386
|
+
|
|
325
387
|
this._markers = [];
|
|
326
388
|
};
|
|
327
|
-
|
|
328
389
|
/**
|
|
329
390
|
* 重新生成,比如改变了属性等
|
|
330
391
|
* @return 无返回值
|
|
331
392
|
*/
|
|
393
|
+
|
|
394
|
+
|
|
332
395
|
MarkerClusterer.prototype._redraw = function () {
|
|
333
396
|
this._clearLastClusters();
|
|
397
|
+
|
|
334
398
|
this._createClusters();
|
|
335
399
|
};
|
|
336
|
-
|
|
337
400
|
/**
|
|
338
401
|
* 获取网格大小
|
|
339
402
|
* @return {Number} 网格大小
|
|
340
403
|
*/
|
|
404
|
+
|
|
405
|
+
|
|
341
406
|
MarkerClusterer.prototype.getGridSize = function () {
|
|
342
407
|
return this._gridSize;
|
|
343
408
|
};
|
|
344
|
-
|
|
345
409
|
/**
|
|
346
410
|
* 设置网格大小
|
|
347
411
|
* @param {Number} size 网格大小
|
|
348
412
|
* @return 无返回值
|
|
349
413
|
*/
|
|
414
|
+
|
|
415
|
+
|
|
350
416
|
MarkerClusterer.prototype.setGridSize = function (size) {
|
|
351
417
|
this._gridSize = size;
|
|
418
|
+
|
|
352
419
|
this._redraw();
|
|
353
420
|
};
|
|
354
|
-
|
|
355
421
|
/**
|
|
356
422
|
* 获取聚合的最大缩放级别。
|
|
357
423
|
* @return {Number} 聚合的最大缩放级别。
|
|
358
424
|
*/
|
|
425
|
+
|
|
426
|
+
|
|
359
427
|
MarkerClusterer.prototype.getMaxZoom = function () {
|
|
360
428
|
return this._maxZoom;
|
|
361
429
|
};
|
|
362
|
-
|
|
363
430
|
/**
|
|
364
431
|
* 设置聚合的最大缩放级别
|
|
365
432
|
* @param {Number} maxZoom 聚合的最大缩放级别
|
|
366
433
|
* @return 无返回值
|
|
367
434
|
*/
|
|
435
|
+
|
|
436
|
+
|
|
368
437
|
MarkerClusterer.prototype.setMaxZoom = function (maxZoom) {
|
|
369
438
|
this._maxZoom = maxZoom;
|
|
439
|
+
|
|
370
440
|
this._redraw();
|
|
371
441
|
};
|
|
372
|
-
|
|
373
442
|
/**
|
|
374
443
|
* 获取聚合的样式风格集合
|
|
375
444
|
* @return {Array<IconStyle>} 聚合的样式风格集合
|
|
376
445
|
*/
|
|
446
|
+
|
|
447
|
+
|
|
377
448
|
MarkerClusterer.prototype.getStyles = function () {
|
|
378
449
|
return this._styles;
|
|
379
450
|
};
|
|
380
|
-
|
|
381
451
|
/**
|
|
382
452
|
* 设置聚合的样式风格集合
|
|
383
453
|
* @param {Array<IconStyle>} styles 样式风格数组
|
|
384
454
|
* @return 无返回值
|
|
385
455
|
*/
|
|
456
|
+
|
|
457
|
+
|
|
386
458
|
MarkerClusterer.prototype.setStyles = function (styles) {
|
|
387
459
|
this._styles = styles;
|
|
460
|
+
|
|
388
461
|
this._redraw();
|
|
389
462
|
};
|
|
390
|
-
|
|
391
463
|
/**
|
|
392
464
|
* 获取单个聚合的最小数量。
|
|
393
465
|
* @return {Number} 单个聚合的最小数量。
|
|
394
466
|
*/
|
|
467
|
+
|
|
468
|
+
|
|
395
469
|
MarkerClusterer.prototype.getMinClusterSize = function () {
|
|
396
470
|
return this._minClusterSize;
|
|
397
471
|
};
|
|
398
|
-
|
|
399
472
|
/**
|
|
400
473
|
* 设置单个聚合的最小数量。
|
|
401
474
|
* @param {Number} size 单个聚合的最小数量。
|
|
402
475
|
* @return 无返回值。
|
|
403
476
|
*/
|
|
477
|
+
|
|
478
|
+
|
|
404
479
|
MarkerClusterer.prototype.setMinClusterSize = function (size) {
|
|
405
480
|
this._minClusterSize = size;
|
|
481
|
+
|
|
406
482
|
this._redraw();
|
|
407
483
|
};
|
|
408
|
-
|
|
409
484
|
/**
|
|
410
485
|
* 获取单个聚合的落脚点是否是聚合内所有标记的平均中心。
|
|
411
486
|
* @return {Boolean} true或false。
|
|
412
487
|
*/
|
|
488
|
+
|
|
489
|
+
|
|
413
490
|
MarkerClusterer.prototype.isAverageCenter = function () {
|
|
414
491
|
return this._isAverageCenter;
|
|
415
492
|
};
|
|
416
|
-
|
|
417
493
|
/**
|
|
418
494
|
* 获取聚合的Map实例。
|
|
419
495
|
* @return {Map} Map的示例。
|
|
420
496
|
*/
|
|
497
|
+
|
|
498
|
+
|
|
421
499
|
MarkerClusterer.prototype.getMap = function () {
|
|
422
500
|
return this._map;
|
|
423
501
|
};
|
|
424
|
-
|
|
425
502
|
/**
|
|
426
503
|
* 获取所有的标记数组。
|
|
427
504
|
* @return {Array<Marker>} 标记数组。
|
|
428
505
|
*/
|
|
506
|
+
|
|
507
|
+
|
|
429
508
|
MarkerClusterer.prototype.getMarkers = function () {
|
|
430
509
|
return this._markers;
|
|
431
510
|
};
|
|
432
|
-
|
|
433
511
|
/**
|
|
434
512
|
* 获取聚合的总数量。
|
|
435
513
|
* @return {Number} 聚合的总数量。
|
|
436
514
|
*/
|
|
515
|
+
|
|
516
|
+
|
|
437
517
|
MarkerClusterer.prototype.getClustersCount = function () {
|
|
438
518
|
var count = 0;
|
|
519
|
+
|
|
439
520
|
for (var i = 0, cluster; cluster = this._clusters[i]; i++) {
|
|
440
521
|
cluster.isReal() && count++;
|
|
441
522
|
}
|
|
523
|
+
|
|
442
524
|
return count;
|
|
443
525
|
};
|
|
444
|
-
|
|
445
526
|
/**
|
|
446
527
|
* @ignore
|
|
447
528
|
* Cluster
|
|
@@ -449,32 +530,38 @@ var BMapLib = window.BMapLib = BMapLib || {};
|
|
|
449
530
|
* @constructor
|
|
450
531
|
* @param {MarkerClusterer} markerClusterer 一个标记聚合器示例。
|
|
451
532
|
*/
|
|
533
|
+
|
|
534
|
+
|
|
452
535
|
function Cluster(markerClusterer) {
|
|
453
536
|
this._markerClusterer = markerClusterer;
|
|
454
537
|
this._map = markerClusterer.getMap();
|
|
455
538
|
this._minClusterSize = markerClusterer.getMinClusterSize();
|
|
456
539
|
this._isAverageCenter = markerClusterer.isAverageCenter();
|
|
457
540
|
this._center = null; //落脚位置
|
|
541
|
+
|
|
458
542
|
this._markers = []; //这个Cluster中所包含的markers
|
|
543
|
+
|
|
459
544
|
this._gridBounds = null; //以中心点为准,向四边扩大gridSize个像素的范围,也即网格范围
|
|
545
|
+
|
|
460
546
|
this._isReal = false; //真的是个聚合
|
|
461
547
|
|
|
462
548
|
this._clusterMarker = new BMapLib.TextIconOverlay(this._center, this._markers.length, {
|
|
463
549
|
styles: this._markerClusterer.getStyles()
|
|
464
|
-
});
|
|
465
|
-
//this._map.addOverlay(this._clusterMarker);
|
|
550
|
+
}); //this._map.addOverlay(this._clusterMarker);
|
|
466
551
|
}
|
|
467
|
-
|
|
468
552
|
/**
|
|
469
553
|
* 向该聚合添加一个标记。
|
|
470
554
|
* @param {Marker} marker 要添加的标记。
|
|
471
555
|
* @return 无返回值。
|
|
472
556
|
*/
|
|
557
|
+
|
|
558
|
+
|
|
473
559
|
Cluster.prototype.addMarker = function (marker) {
|
|
474
560
|
if (this.isMarkerInCluster(marker)) {
|
|
475
561
|
return false;
|
|
476
562
|
} //也可用marker.isInCluster判断,外面判断OK,这里基本不会命中
|
|
477
563
|
|
|
564
|
+
|
|
478
565
|
if (!this._center) {
|
|
479
566
|
this._center = marker.getPosition();
|
|
480
567
|
this.updateGridBounds(); //
|
|
@@ -486,33 +573,40 @@ var BMapLib = window.BMapLib = BMapLib || {};
|
|
|
486
573
|
this._center = new BMap.Point(lng, lat);
|
|
487
574
|
this.updateGridBounds();
|
|
488
575
|
} //计算新的Center
|
|
576
|
+
|
|
489
577
|
}
|
|
578
|
+
|
|
490
579
|
marker.isInCluster = true;
|
|
580
|
+
|
|
491
581
|
this._markers.push(marker);
|
|
492
582
|
};
|
|
493
|
-
|
|
494
583
|
/**
|
|
495
584
|
* 进行dom操作
|
|
496
585
|
* @return 无返回值
|
|
497
586
|
*/
|
|
587
|
+
|
|
588
|
+
|
|
498
589
|
Cluster.prototype.render = function () {
|
|
499
590
|
var len = this._markers.length;
|
|
591
|
+
|
|
500
592
|
if (len < this._minClusterSize) {
|
|
501
593
|
for (var i = 0; i < len; i++) {
|
|
502
594
|
this._map.addOverlay(this._markers[i]);
|
|
503
595
|
}
|
|
504
596
|
} else {
|
|
505
597
|
this._map.addOverlay(this._clusterMarker);
|
|
598
|
+
|
|
506
599
|
this._isReal = true;
|
|
507
600
|
this.updateClusterMarker();
|
|
508
601
|
}
|
|
509
602
|
};
|
|
510
|
-
|
|
511
603
|
/**
|
|
512
604
|
* 判断一个标记是否在该聚合中。
|
|
513
605
|
* @param {Marker} marker 要判断的标记。
|
|
514
606
|
* @return {Boolean} true或false。
|
|
515
607
|
*/
|
|
608
|
+
|
|
609
|
+
|
|
516
610
|
Cluster.prototype.isMarkerInCluster = function (marker) {
|
|
517
611
|
if (this._markers.indexOf) {
|
|
518
612
|
return this._markers.indexOf(marker) != -1;
|
|
@@ -523,86 +617,108 @@ var BMapLib = window.BMapLib = BMapLib || {};
|
|
|
523
617
|
}
|
|
524
618
|
}
|
|
525
619
|
}
|
|
620
|
+
|
|
526
621
|
return false;
|
|
527
622
|
};
|
|
528
|
-
|
|
529
623
|
/**
|
|
530
624
|
* 判断一个标记是否在该聚合网格范围中。
|
|
531
625
|
* @param {Marker} marker 要判断的标记。
|
|
532
626
|
* @return {Boolean} true或false。
|
|
533
627
|
*/
|
|
628
|
+
|
|
629
|
+
|
|
534
630
|
Cluster.prototype.isMarkerInClusterBounds = function (marker) {
|
|
535
631
|
return this._gridBounds.containsPoint(marker.getPosition());
|
|
536
632
|
};
|
|
633
|
+
|
|
537
634
|
Cluster.prototype.isReal = function (marker) {
|
|
538
635
|
return this._isReal;
|
|
539
636
|
};
|
|
540
|
-
|
|
541
637
|
/**
|
|
542
638
|
* 更新该聚合的网格范围。
|
|
543
639
|
* @return 无返回值。
|
|
544
640
|
*/
|
|
641
|
+
|
|
642
|
+
|
|
545
643
|
Cluster.prototype.updateGridBounds = function () {
|
|
546
644
|
var bounds = new BMap.Bounds(this._center, this._center);
|
|
547
645
|
this._gridBounds = getExtendedBounds(this._map, bounds, this._markerClusterer.getGridSize());
|
|
548
646
|
};
|
|
549
|
-
|
|
550
647
|
/**
|
|
551
648
|
* 更新该聚合的显示样式,也即TextIconOverlay。
|
|
552
649
|
* @return 无返回值。
|
|
553
650
|
*/
|
|
651
|
+
|
|
652
|
+
|
|
554
653
|
Cluster.prototype.updateClusterMarker = function () {
|
|
555
654
|
if (this._map.getZoom() > this._markerClusterer.getMaxZoom()) {
|
|
556
655
|
this._clusterMarker && this._map.removeOverlay(this._clusterMarker);
|
|
656
|
+
|
|
557
657
|
for (var i = 0, marker; marker = this._markers[i]; i++) {
|
|
558
658
|
this._map.addOverlay(marker);
|
|
559
659
|
}
|
|
660
|
+
|
|
560
661
|
return;
|
|
561
662
|
}
|
|
663
|
+
|
|
562
664
|
if (this._markers.length < this._minClusterSize) {
|
|
563
665
|
this._clusterMarker.hide();
|
|
666
|
+
|
|
564
667
|
return;
|
|
565
668
|
}
|
|
669
|
+
|
|
566
670
|
this._clusterMarker.setPosition(this._center);
|
|
671
|
+
|
|
567
672
|
this._clusterMarker.setText(this._markers.length);
|
|
673
|
+
|
|
568
674
|
var thatMap = this._map;
|
|
569
675
|
var thatBounds = this.getBounds();
|
|
676
|
+
|
|
570
677
|
this._clusterMarker.addEventListener('click', function (event) {
|
|
571
678
|
thatMap.setViewport(thatBounds);
|
|
572
679
|
});
|
|
573
680
|
};
|
|
574
|
-
|
|
575
681
|
/**
|
|
576
682
|
* 删除该聚合。
|
|
577
683
|
* @return 无返回值。
|
|
578
684
|
*/
|
|
685
|
+
|
|
686
|
+
|
|
579
687
|
Cluster.prototype.remove = function () {
|
|
580
688
|
for (var i = 0, m; m = this._markers[i]; i++) {
|
|
581
689
|
tmplabel = this._markers[i].getLabel();
|
|
582
690
|
this._markers[i].getMap() && this._map.removeOverlay(this._markers[i]);
|
|
691
|
+
|
|
583
692
|
this._markers[i].setLabel(tmplabel);
|
|
584
693
|
} //清除散的标记点
|
|
694
|
+
|
|
695
|
+
|
|
585
696
|
this._map.removeOverlay(this._clusterMarker);
|
|
697
|
+
|
|
586
698
|
this._markers.length = 0;
|
|
587
699
|
delete this._markers;
|
|
588
700
|
};
|
|
589
|
-
|
|
590
701
|
/**
|
|
591
702
|
* 获取该聚合所包含的所有标记的最小外接矩形的范围。
|
|
592
703
|
* @return {BMap.Bounds} 计算出的范围。
|
|
593
704
|
*/
|
|
705
|
+
|
|
706
|
+
|
|
594
707
|
Cluster.prototype.getBounds = function () {
|
|
595
708
|
var bounds = new BMap.Bounds(this._center, this._center);
|
|
709
|
+
|
|
596
710
|
for (var i = 0, marker; marker = this._markers[i]; i++) {
|
|
597
711
|
bounds.extend(marker.getPosition());
|
|
598
712
|
}
|
|
713
|
+
|
|
599
714
|
return bounds;
|
|
600
715
|
};
|
|
601
|
-
|
|
602
716
|
/**
|
|
603
717
|
* 获取该聚合的落脚点。
|
|
604
718
|
* @return {BMap.Point} 该聚合的落脚点。
|
|
605
719
|
*/
|
|
720
|
+
|
|
721
|
+
|
|
606
722
|
Cluster.prototype.getCenter = function () {
|
|
607
723
|
return this._center;
|
|
608
724
|
};
|