我通过MarkerClustererPlus绘制几十万点,我想设置的基于一些exteral财产集群图标(颜色)组( 不是基于表示标记的数量)。
我能想到做到这一点的唯一方法是通过创建多个MarkerClusterer对象,并在不同的传球options
的对象,但我觉得我会采取一个大的性能命中这样做。 有没有更好的办法?
鉴于上面的图像,我想139,24和5是黄色和213,25,30,和2为红色; 如果可能的话,可以通过setOptions更新自己的风格/选项:
mc.group[0].setOptions({"url": imgPath +lookupThreshold(severity)+ '.svg' });
mc.group[1].setOptions({"url": imgPath +lookupThreshold(severity)+ '.svg' });
PS如果有人有兴趣,我调整的lib因此集群图标秤其尺寸†通过提供SVG图像并增加在选项宽度&高度对象:
var mcOptions = {
"styles": [{
"height": 19,
"url": img/map/clusters/",
"width": 19
},{
"height": 24,
"url": img/map/clusters/",
"width": 24
}, {…}]
};
for ( var s = mcOptions.styles.length-1; s >= 0; s-- )
{ mcOptions.styles[s].url += lookupThreshold(severity) + '.svg'; }
// lookupThreshold switches severity and returns a string: red, orange, …
然后添加以下到markerclusterer.js
:
line 275: this.backgroundSize_ = style.backgroundSize || "contain";
line 300: style.push('background-size:' + this.backgroundSize_ + ';');
†在FFX 19.0.2,铬26.x,铬金丝雀28.x,Safari浏览器6.0.2,IE 9.0.8作品(但不是Opera 12.15)。
编辑似乎没有太多的性能损失的从创建MarkerClusterer的多个实例; 然而,看来属性/对象传递给MC选项被amoung的MC的实例共享 。
解决了我不得不修改近线665 MarkerClustererPlus库克隆opt_options
(的lib是使用参考,由此引起的一切以前opt_options与最新的/最后一个通过被覆盖)。