0

マーカー クラスターに適用されるスタイルを変更する方法はありますか? デフォルトがクラスターのサイズに基づいていることはわかっていますが、それを変更したいと考えています。

背景: コンピューターの可用性を示す複数の色のマーカーがあります。赤 = オフライン、緑 = 使用可能、黄色 = 使用不可です。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
      };
    });
4

2 に答える 2

1

必要なことを行う関数を追加するのはどうですか。この関数は、そのクラスター内の緑/色付きのマーカーの数とズーム レベル (if elseif 条件がそれを実行する必要があります) をチェックし、それに応じて以前にクラスターに設定されたアイコンを上書きします。の最後でこの関数を呼び出しますsetCalculator()。これが難しいとは思いません。何か問題があれば試してみて、試したコードを投稿してください。

于 2012-11-03T05:22:21.607 に答える
0

私のスイッチは悪く、黄色のロジックはそれを台無しにしていました:

if(avail == 0){
   index=3;
}
if((0 < avail)&&(avail < 3)){
   index=2;
}
if(avail >= 3) {
   index=1;
}
于 2012-11-08T16:33:34.477 に答える