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

除了其他两个 Cluster类'click'事件'mouseover''mouseout'. markerclusterer.js最新版本 2.0.15的文件中有一个错误。要让它触发'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

而已!

不要忘记更改两个markerclusterplus 脚本(markerclusterer.jsmarkerclusterer_packed.js)。进行编辑后,您可以使用UglifyJS_packed.js重新创建版本,方法是剪切 n' 并将其粘贴到此站点中。我已经使用过它并且效果很好(原始的 30.6%)。

有关如何修复该脚本中的'mouseover''mouseout'事件的详细信息,请参阅我的其他SO 帖子

于 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 回答
1

使用 MarkerClustererPlus,只需将事件侦听器附加到 google mapsaddListener方法:

var markerCluster = new MarkerClusterer(map, markers, {options});

google.maps.event.addListener(markerCluster, "click", function (c) {
    console.log('Cluster Object:' + c)
});
于 2017-04-02T02:56:22.637 回答