4

私はjquery-ui-mapmarkerclustererプラグインを使用してGoogleマップを作成するWebベースのマップを持っています。markerclustererマーカーがクラスタ内にあるかどうかを確認します

マーカーを表示するかどうかを除外してマップを更新します。

クラスタ化されていないマーカーのリストを作成する必要があります。このためには、マーカーをマーカーでチェックし、クラスター化されていないマーカーを見つける方法が必要です。

これを行う方法はありますか?

クラスタを循環して手動でマーカーをチェックしてみましたが、クラスタプロパティvar_clusterer.clusters_が定義されていないというエラーが表示されました。

答えて

6

:このソリューションでは、あなたは現在MarkerClustererによって処理されているすべてのクラスタオブジェクトの配列を配るためにgetClusters()メソッドを使用することができますMarkerClustererPlusライブラリ

を使用しています。

var clusterManager = new MarkerClusterer(googleMap, markersArray, clusterOptions); // setup a new MarkerClusterer 

var clusters = clusterManager.getClusters(); // use the get clusters method which returns an array of objects 

for(var i=0, l=clusters.length; i<l; i++){ 
    for(var j=0, le=clusters[i].markers_.length; j<le; j++){ 
     marker = clusters[i].markers_[j]; // <-- Here's your clustered marker 
    } 
} 

getClusters()を使用して配列を取得した後、クラスタオブジェクトをループします。各クラスタに対して、現在のmarkers_配列をプルして、クラスタ化マーカーを取得できます。

getClusters()ドキュメントで次のようになる:MarkerClustererPlus docs

+0

良いニュースと悪いニュース...良いニュース:私は自分自身で答えを見つけました。これはあなたが説明したのとまったく同じです。悪いニュース:私は答えを探して一週間以上過ごしました:-P。同様の問題を抱えている人は誰でも上記を行う必要があります。ご回答ありがとうございます – jaget

+2

通常のMarkerClustererではgetClusters()メソッドがないため、MarkerClustererPlusを使用していますか? –

+1

@DejanStuparic [docs](http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.7/docs/reference.html#MarkerClusterer)をご覧になっている場合は、彼らは明らかに 'getClusters()'メソッドを表示します。 – hitautodestruct

2

Aわずかにダンプが、効果的な方法....

あなたはマーカークラスタラオブジェクトに個別にマーカーを挿入し、直ちに(1)の前にしてもよいです(2)後に、その新しい.getTotalCluster()メソッドを呼び出して、新しく追加されたマーカーがクラスタに入るかどうかを確認します。

getClusters()が私のためにうまく動作しなかった場合、jquery経由で使用していない可能性があります。

var old_cluster_val = markerCluster.getTotalClusters(); // <-----(1) 
    markerCluster.addMarker(marker); 
var new_cluster_val = markerCluster.getTotalClusters(); // <-----(2) 

if (old_cluster_val == new_cluster_val) { 
    in_a_cluster.push(marker); 
} else { 
    not_in_cluster.push(marker); 
} 
+1

わずかにダンプするかもしれませんが、markerCluster.getTotalClusters()を使用すると、明らかに配列に11個のマーカーがあるにもかかわらず、常に0が返されます。何が問題なの? – suMi

関連する問題