@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.
Files changed (230) hide show
  1. package/lib/b-map/b-map.d.ts +63 -0
  2. package/lib/b-map/b-map.js +296 -0
  3. package/lib/b-map/b-map.js.map +1 -0
  4. package/lib/b-map/custom-overlay.d.ts +13 -0
  5. package/lib/b-map/custom-overlay.js +84 -0
  6. package/lib/b-map/custom-overlay.js.map +1 -0
  7. package/lib/b-map/drawing.d.ts +14 -0
  8. package/lib/b-map/drawing.js +73 -0
  9. package/lib/b-map/drawing.js.map +1 -0
  10. package/lib/b-map/index.d.ts +17 -0
  11. package/lib/b-map/index.js +35 -0
  12. package/lib/b-map/index.js.map +1 -0
  13. package/lib/b-map/js/marker-clusterer.js +158 -42
  14. package/lib/b-map/js/marker-clusterer.js.map +1 -1
  15. package/lib/b-map/lushu.d.ts +16 -0
  16. package/lib/b-map/lushu.js +78 -0
  17. package/lib/b-map/lushu.js.map +1 -0
  18. package/lib/b-map/marker-clusterer.d.ts +29 -0
  19. package/lib/b-map/marker-clusterer.js +52 -0
  20. package/lib/b-map/marker-clusterer.js.map +1 -0
  21. package/lib/b-map/marker.d.ts +45 -0
  22. package/lib/b-map/marker.js +184 -0
  23. package/lib/b-map/marker.js.map +1 -0
  24. package/lib/b-map/polygon.d.ts +54 -0
  25. package/lib/b-map/polygon.js +44 -0
  26. package/lib/b-map/polygon.js.map +1 -0
  27. package/lib/b-map/style/css.js +4 -0
  28. package/lib/b-map/style/css.js.map +1 -0
  29. package/lib/b-map/style/index.d.ts +1 -0
  30. package/lib/b-map/style/index.js +4 -0
  31. package/lib/b-map/style/index.js.map +1 -0
  32. package/lib/create-modal/create-modal.d.ts +31 -0
  33. package/lib/create-modal/create-modal.js +653 -0
  34. package/lib/create-modal/create-modal.js.map +1 -0
  35. package/lib/create-modal/index.d.ts +3 -0
  36. package/lib/create-modal/index.js +14 -0
  37. package/lib/create-modal/index.js.map +1 -0
  38. package/lib/create-modal/style/css.js +22 -0
  39. package/lib/create-modal/style/css.js.map +1 -0
  40. package/lib/create-modal/style/index.d.ts +10 -0
  41. package/lib/create-modal/style/index.js +22 -0
  42. package/lib/create-modal/style/index.js.map +1 -0
  43. package/lib/import-modal/import-modal.d.ts +23 -0
  44. package/lib/import-modal/import-modal.js +358 -0
  45. package/lib/import-modal/import-modal.js.map +1 -0
  46. package/lib/import-modal/index.d.ts +2 -0
  47. package/lib/import-modal/index.js +14 -0
  48. package/lib/import-modal/index.js.map +1 -0
  49. package/lib/import-modal/style/css.js +14 -0
  50. package/lib/import-modal/style/css.js.map +1 -0
  51. package/lib/import-modal/style/index.d.ts +6 -0
  52. package/lib/import-modal/style/index.js +14 -0
  53. package/lib/import-modal/style/index.js.map +1 -0
  54. package/lib/index.d.ts +13 -0
  55. package/lib/index.js +104 -0
  56. package/lib/index.js.map +1 -0
  57. package/lib/interface/index.d.ts +7 -0
  58. package/lib/interface/index.js +6 -0
  59. package/lib/interface/index.js.map +1 -0
  60. package/lib/mapv-Layer/Function.d.ts +1 -0
  61. package/lib/mapv-Layer/Function.js +2 -0
  62. package/lib/mapv-Layer/Function.js.map +1 -1
  63. package/lib/mapv-Layer/index.d.ts +2 -0
  64. package/lib/mapv-Layer/index.js +14 -0
  65. package/lib/mapv-Layer/index.js.map +1 -0
  66. package/lib/mapv-Layer/mapv-Layer.d.ts +7 -0
  67. package/lib/mapv-Layer/mapv-Layer.js +117 -0
  68. package/lib/mapv-Layer/mapv-Layer.js.map +1 -0
  69. package/lib/mapv-Layer/style/css.js +2 -0
  70. package/lib/mapv-Layer/style/css.js.map +1 -0
  71. package/lib/mapv-Layer/style/index.d.ts +1 -0
  72. package/lib/mapv-Layer/style/index.js +2 -0
  73. package/lib/mapv-Layer/style/index.js.map +1 -0
  74. package/lib/percent/images/icon-arrow.png +0 -0
  75. package/lib/percent/index.d.ts +8 -0
  76. package/lib/percent/index.js +18 -0
  77. package/lib/percent/index.js.map +1 -0
  78. package/lib/percent/interface.d.ts +6 -0
  79. package/lib/percent/interface.js +6 -0
  80. package/lib/percent/interface.js.map +1 -0
  81. package/lib/percent/line-percent.d.ts +11 -0
  82. package/lib/percent/line-percent.js +114 -0
  83. package/lib/percent/line-percent.js.map +1 -0
  84. package/lib/percent/percent.d.ts +10 -0
  85. package/lib/percent/percent.js +139 -0
  86. package/lib/percent/percent.js.map +1 -0
  87. package/lib/percent/style/css.js +4 -0
  88. package/lib/percent/style/css.js.map +1 -0
  89. package/lib/percent/style/index.d.ts +1 -0
  90. package/lib/percent/style/index.js +4 -0
  91. package/lib/percent/style/index.js.map +1 -0
  92. package/lib/scroll/index.d.ts +2 -0
  93. package/lib/scroll/index.js +14 -0
  94. package/lib/scroll/index.js.map +1 -0
  95. package/lib/scroll/scroll.d.ts +4 -0
  96. package/lib/scroll/scroll.js +105 -0
  97. package/lib/scroll/scroll.js.map +1 -0
  98. package/lib/scroll/style/css.js +4 -0
  99. package/lib/scroll/style/css.js.map +1 -0
  100. package/lib/scroll/style/index.d.ts +1 -0
  101. package/lib/scroll/style/index.js +4 -0
  102. package/lib/scroll/style/index.js.map +1 -0
  103. package/lib/scroll-select/index.d.ts +2 -0
  104. package/lib/scroll-select/index.js +14 -0
  105. package/lib/scroll-select/index.js.map +1 -0
  106. package/lib/scroll-select/scrollSelect.d.ts +2 -0
  107. package/lib/scroll-select/scrollSelect.js +323 -0
  108. package/lib/scroll-select/scrollSelect.js.map +1 -0
  109. package/lib/scroll-select/style/css.js +6 -0
  110. package/lib/scroll-select/style/css.js.map +1 -0
  111. package/lib/scroll-select/style/index.d.ts +2 -0
  112. package/lib/scroll-select/style/index.js +6 -0
  113. package/lib/scroll-select/style/index.js.map +1 -0
  114. package/lib/table/index.d.ts +2 -0
  115. package/lib/table/index.js +14 -0
  116. package/lib/table/index.js.map +1 -0
  117. package/lib/table/style/css.js +6 -0
  118. package/lib/table/style/css.js.map +1 -0
  119. package/lib/table/style/index.d.ts +2 -0
  120. package/lib/table/style/index.js +6 -0
  121. package/lib/table/style/index.js.map +1 -0
  122. package/lib/table/table.d.ts +17 -0
  123. package/lib/table/table.js +162 -0
  124. package/lib/table/table.js.map +1 -0
  125. package/lib/template/action.d.ts +57 -0
  126. package/lib/template/action.js +265 -0
  127. package/lib/template/action.js.map +1 -0
  128. package/lib/template/card-table.d.ts +35 -0
  129. package/lib/template/card-table.js +193 -0
  130. package/lib/template/card-table.js.map +1 -0
  131. package/lib/template/card.d.ts +15 -0
  132. package/lib/template/card.js +116 -0
  133. package/lib/template/card.js.map +1 -0
  134. package/lib/template/check-row.d.ts +6 -0
  135. package/lib/template/check-row.js +39 -0
  136. package/lib/template/check-row.js.map +1 -0
  137. package/lib/template/field.d.ts +6 -0
  138. package/lib/template/field.js +50 -0
  139. package/lib/template/field.js.map +1 -0
  140. package/lib/template/filter.d.ts +13 -0
  141. package/lib/template/filter.js +146 -0
  142. package/lib/template/filter.js.map +1 -0
  143. package/lib/template/icon.d.ts +6 -0
  144. package/lib/template/icon.js +33 -0
  145. package/lib/template/icon.js.map +1 -0
  146. package/lib/template/index.d.ts +13 -0
  147. package/lib/template/index.js +24 -0
  148. package/lib/template/index.js.map +1 -0
  149. package/lib/template/interface.d.ts +4 -0
  150. package/lib/template/interface.js +6 -0
  151. package/lib/template/interface.js.map +1 -0
  152. package/lib/template/renderColumnButtons.d.ts +2 -0
  153. package/lib/template/renderColumnButtons.js +173 -0
  154. package/lib/template/renderColumnButtons.js.map +1 -0
  155. package/lib/template/style/css.js +40 -0
  156. package/lib/template/style/css.js.map +1 -0
  157. package/lib/template/style/index.d.ts +19 -0
  158. package/lib/template/style/index.js +40 -0
  159. package/lib/template/style/index.js.map +1 -0
  160. package/lib/template/table.d.ts +44 -0
  161. package/lib/template/table.js +103 -0
  162. package/lib/template/table.js.map +1 -0
  163. package/lib/template/template.d.ts +84 -0
  164. package/lib/template/template.js +610 -0
  165. package/lib/template/template.js.map +1 -0
  166. package/lib/template/toolbar.d.ts +16 -0
  167. package/lib/template/toolbar.js +102 -0
  168. package/lib/template/toolbar.js.map +1 -0
  169. package/lib/to-map/container.d.ts +28 -0
  170. package/lib/to-map/container.js +295 -0
  171. package/lib/to-map/container.js.map +1 -0
  172. package/lib/to-map/draw-area.d.ts +6 -0
  173. package/lib/to-map/draw-area.js +66 -0
  174. package/lib/to-map/draw-area.js.map +1 -0
  175. package/lib/to-map/images/icon-area.png +0 -0
  176. package/lib/to-map/images/icon-picker.png +0 -0
  177. package/lib/to-map/index.d.ts +8 -0
  178. package/lib/to-map/index.js +18 -0
  179. package/lib/to-map/index.js.map +1 -0
  180. package/lib/to-map/style/css.js +6 -0
  181. package/lib/to-map/style/css.js.map +1 -0
  182. package/lib/to-map/style/index.d.ts +2 -0
  183. package/lib/to-map/style/index.js +6 -0
  184. package/lib/to-map/style/index.js.map +1 -0
  185. package/lib/to-map/to-map.d.ts +12 -0
  186. package/lib/to-map/to-map.js +120 -0
  187. package/lib/to-map/to-map.js.map +1 -0
  188. package/lib/upload/index.d.ts +2 -0
  189. package/lib/upload/index.js +14 -0
  190. package/lib/upload/index.js.map +1 -0
  191. package/lib/upload/style/css.js +10 -0
  192. package/lib/upload/style/css.js.map +1 -0
  193. package/lib/upload/style/index.d.ts +4 -0
  194. package/lib/upload/style/index.js +10 -0
  195. package/lib/upload/style/index.js.map +1 -0
  196. package/lib/upload/upload.d.ts +12 -0
  197. package/lib/upload/upload.js +445 -0
  198. package/lib/upload/upload.js.map +1 -0
  199. package/lib/use-simple-res/demos/index.d.ts +2 -0
  200. package/lib/use-simple-res/demos/index.js +116 -0
  201. package/lib/use-simple-res/demos/index.js.map +1 -0
  202. package/lib/use-simple-res/index.d.ts +28 -0
  203. package/lib/use-simple-res/index.js +99 -0
  204. package/lib/use-simple-res/index.js.map +1 -0
  205. package/lib/use-simple-res/style/css.js +4 -0
  206. package/lib/use-simple-res/style/css.js.map +1 -0
  207. package/lib/use-simple-res/style/index.d.ts +1 -0
  208. package/lib/use-simple-res/style/index.js +4 -0
  209. package/lib/use-simple-res/style/index.js.map +1 -0
  210. package/lib/utils/dom-util.d.ts +19 -0
  211. package/lib/utils/dom-util.js +98 -0
  212. package/lib/utils/dom-util.js.map +1 -0
  213. package/lib/utils/request-util.d.ts +42 -0
  214. package/lib/utils/request-util.js +191 -0
  215. package/lib/utils/request-util.js.map +1 -0
  216. package/lib/utils/string-util.d.ts +11 -0
  217. package/lib/utils/string-util.js +47 -0
  218. package/lib/utils/string-util.js.map +1 -0
  219. package/lib/view-modal/index.d.ts +2 -0
  220. package/lib/view-modal/index.js +14 -0
  221. package/lib/view-modal/index.js.map +1 -0
  222. package/lib/view-modal/style/css.js +16 -0
  223. package/lib/view-modal/style/css.js.map +1 -0
  224. package/lib/view-modal/style/index.d.ts +8 -0
  225. package/lib/view-modal/style/index.js +16 -0
  226. package/lib/view-modal/style/index.js.map +1 -0
  227. package/lib/view-modal/view-modal.d.ts +8 -0
  228. package/lib/view-modal/view-modal.js +208 -0
  229. package/lib/view-modal/view-modal.js.map +1 -0
  230. 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
  };