标记群集样式

时间:2012-11-02 21:36:56

标签: google-maps-api-3 google-maps-markers markerclusterer

有没有办法可以更改应用于标记群集的样式?我知道默认值是基于群集的大小,我想改变它。

背景:我有一些标记有多种颜色可供计算机使用,红色=离线,绿色=可用,黄色=不可用。我可以通过使用setCalculator函数更改群集中的数字,并通过计算图标设置为绿色的标记数来设置数字。有没有办法让它如此如果群集中有这么多绿色标记我可以改变那种方式的簇颜色?还有一种方法可以根据缩放级别改变它吗?

IE:默认缩放级别

if #avail < 2 => set red
if 2 < #avail < 5 => set yellow
if #avail > 5 => set green

我试过这个:

markerClusterer.setCalculator(function (markers, numStyles) {
      var index = 0;
      var count = markers.length;
    var avail = 0;
    for (var i=0;i<count;i++){
      if (markers[i].icon == "icons/available.png"){
          avail++;
        }
    }

    switch(true) {//change index based on number of available computers
        case (avail == 0)://red
            index = 3;
            break;
        case (0 < avail < 3)://yellow
            index = 2;
            break;
        case (avail >= 3)://blue/green
            index = 1;
            break;
    }
      //index = Math.min(index, numStyles);
      return {
        text: avail,
        index: index
      };
    });

2 个答案:

答案 0 :(得分:1)

如何添加能够满足您需求的功能。该功能将检查该群集中绿色/彩色标记的数量以及缩放级别(如果ififif条件应该这样做),并相应地覆盖先前设置的群集图标。您将在setCalculator()的末尾调用此函数。我不希望这很难,如果你有任何问题,试一试并发布你尝试过的代码。

答案 1 :(得分:0)

想出来 我的开关很糟糕,黄色的逻辑搞乱了 :

if(avail == 0){
   index=3;
}
if((0 < avail)&&(avail < 3)){
   index=2;
}
if(avail >= 3) {
   index=1;
}