6

jquery-ui-mapmarkerclustererプラグインを使用して Google マップを作成する Web ベースのマップがあります。

表示するマーカーと表示しないマーカーを除外してから、マップを更新します。

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

これを行うためのテクニックはありますか?

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

4

3 に答える 3

8

:このソリューションはMarkerClustererPlusライブラリを使用します

getClusters()メソッドを使用して、MarkerClustererによって現在処理されているすべてのクラスターオブジェクトの配列をディッシュすることができます。

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ドキュメント

于 2012-01-02T12:53:41.810 に答える
2

少しダンプしますが、効果的な方法....

マーカーを個別にマーカー クラスタリング オブジェクトに挿入し、(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 );
}
于 2012-05-03T23:15:36.650 に答える