2012-01-26 18 views
7

後に変更していない現在、私は、マーカーのセットを持っていると私は、このようにそれらをクラスタ化:がmarkerclusterのsetVisible

var markerCluster = new MarkerClusterer(map, cm_mapMarkers); 

しかし、私はまた私が虚偽表示または真のマーカーを設定するために使用するフィルタのセットを持っています。 残念ながら、マーカーをsetvisible(false)に設定すると、クラスターの数は変化しません。

だから私はこれを行うための方法を探しました:

私は次のことを試してみました:

MarkerClusterer.redraw(); 
MarkerClusterer.repaint(); 

その結果はどちらも:方法はありません何の方法をしている「再描画しない」ここで

「を再描画」 JSfiddleです:

http://jsfiddle.net/tDYcX/30/

誰も私が間違っていることを知っていますか?事前

答えて

14

私はあなたのmarkerClusterし、マップを保存...試みるしばらくして、私はそこに誰かのために多分役立つ、働く解決策を見つけたmarkerclustererplusを使用してmarkerCluster.setIgnoreHidden(true); and markerCluster.repaint();

+0

あなたのソリューションは完璧に私のために働く、ありがとう! – AlexB

+0

おいしい男!数週間このソリューションを探していました。ありがとうございました。 –

2

おかげMarkerClustererが本当にそういったことのために設計されていません。あなたが望むことを行う最も簡単な方法は、clearMarkers()、次にaddMarkers(markers)に、あなたのフィルターに合ったマーカーの新しい配列を入れることです。

+0

は、他の方法が本当にないですか?私は再描画または再描画が機能するはずだと考えました.... – Emrulez

+0

MarkerClustererはマーカーの可視状態に注意を払うことなく、位置を使用します。マーカーは、クラスタ内にマーカーが1つしかない場合にマップに追加されます。 – skarE

1

を使用してそれを行うには

を管理します(mymap)を変数に入れます。

次に使用可能なマーカーの全てと、この好きにthrouthループ:

if (show) { 
     markerCluster.addMarker(markers[i]); 

     if (markers[i].getMap == null) 
      markers[i].marker.setMap(mymap); 
     showing++; 
    } else { 

     markerCluster.removeMarker(markers[i]); 

     if (markers[i].getMap != null) 
      markers[i].marker.setMap(null); 
    } 
関連する問題