1

個々のマーカーが MarkerClusterer でクラスター化されないようにする方法はありますか?

ここに私のコードがあります:

google.maps.event.addListener(marker, 'click', function() {
    // prevent marker from being clustered here
});

MarkerClusterer オブジェクトからマーカーを削除して、後で追加し直すことができることはわかっていますが、これはやや複雑であり、これを行うための組み込み機能があるかどうか疑問に思っています。ドキュメンテーションをブラウズするのは無益であることが判明しましたが、何かを見落としている可能性があります。

4

1 に答える 1

3

組み込みの機能はないようですが、操作を簡単にするためにできることがいくつかあります。

簡単に切り替えられるように、クラスターをマーカーに保存することをお勧めします。

myClusterer = new MarkerClusterer(map, markers);

...

google.maps.event.addListener(marker, 'click', function() {
    // if marker is detached from clusterer
    if(marker.clusterer) {
        clusterer.attachMarkers([marker]);
        marker.clusterer = null;
    // if marker is attached to clusterer
    } else {
        marker.clusterer = myClusterer;
        clusterer.removeMarker(marker);
    }
});

またはできれば、マーカーにクラスタラーを最初から保存させます。

myClusterer = new MarkerClusterer(map)
marker = new MyClusterableMarker();
marker.attachToClusterer(myClusterer)

...

google.maps.event.addListener(marker, 'click', function() {
    marker.toggleAttachmentToClusterer();
});

...

$.extend(MyClusterableMarker.prototype, google.maps.Marker.prototype, {

    attachToClusterer: function(clusterer) {
        this.clusterer = clusterer;
        this.clusterer.attachMarkers([this]);
        this.attachedToClusterer = true;
    },

    toggleAttachmentToClusterer: function() {
        if(this.attachedToClusterer) {
            this.clusterer.removeMarker(this);
            this.attachedToClusterer = false;
        } else {
            this.clusterer.addMarkers([this]);
            this.attachedToClusterer = true;
        }
    }
})
于 2012-08-06T23:14:16.460 に答える