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