1

次のようにjqueryスクリプトにmarkerclustererplusを実装しました:

$('#map_canvas').gmap({'streetViewControl':false,'mapTypeId': 'terrain'}).bind('init', function(evt, map) { 
    var mcOptions = {gridSize: 30, maxZoom: 15, ignoreHidden:true};
    $('#map_canvas').gmap('set', 'MarkerClusterer', new MarkerClusterer(map, $('#map_canvas').gmap('get', 'markers'),mcOptions));
}); 
});

これまでのところ、すべて問題ありません。問題は、ユーザーがクラスターをクリックした場合、クリック イベントをキャッチするにはどうすればよいかということです。

4

3 に答える 3

2

他の'click'2 つの Cluster クラス イベントと. 最新バージョン 2.0.15のファイルにバグがあります。イベントを発生させるには、次のように変更します。'mouseover''mouseout'markerclusterer.js'click'markerclusterer.js

次の行を見つけます。

google.maps.event.addDomListener(this.div_, "click", function (e) {

そしてその下にこれを変更します:

var mc = cClusterIcon.cluster_.getMarkerClusterer();

google.maps.event.trigger(mc, "click", cClusterIcon.cluster_);
google.maps.event.trigger(mc, "clusterclick", cClusterIcon.cluster_); // deprecated name

これに:

var c = cClusterIcon.cluster_;
var mc = c.getMarkerClusterer();

google.maps.event.trigger(c, "click", cClusterIcon.cluster_);
google.maps.event.trigger(c, "clusterclick", cClusterIcon.cluster_); // deprecated name

それでおしまい!

markerclusterer.js両方の markerclusterplus スクリプト (および)を変更することを忘れないでくださいmarkerclusterer_packed.js編集を行った後、 UglifyJSを使用してこのサイトにカット アンド ペーストすることで_packed.jsバージョンを再作成できます。私はすでにそれを使用しており、うまく機能します (オリジナルの 30.6%)。

そのスクリプトの'mouseover'およびイベントを修正する方法の詳細については、他のSO 投稿を参照してください。'mouseout'

于 2013-01-29T22:54:13.063 に答える
1

jquery-ui-gmap でこの解決策を見つけました。

var clusterer_ = $('#map_canvas').gmap('get', 'MarkerClusterer');

google.maps.event.addListener(clusterer_, 'clusterclick', function (cluster) {
   alert("cluster click event");
});
于 2013-01-01T22:05:22.830 に答える