如何从markerclustererplus获取点击事件

时间:2012-11-11 13:56:35

标签: jquery user-interface maps markerclusterer

我在我的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));
}); 
});

到目前为止,一切都很好。问题是:如果用户点击群集,我如何捕获点击事件?

3 个答案:

答案 0 :(得分:1)

我用jquery-ui-gmap找到了这个解决方案。

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

google.maps.event.addListener(clusterer_, 'clusterclick', function (cluster) {
   alert("cluster click event");
});

答案 1 :(得分:1)

除了其他两个Cluster类事件'click''mouseover'之外,我对'mouseout'事件也遇到了同样的问题。最新版本2.0.15的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

就是这样!

不要忘记更改markerclusterplus脚本(markerclusterer.jsmarkerclusterer_packed.js)。进行编辑后,您可以使用UglifyJS重新创建_packed.js版本,方法是将其粘贴到此网站中。我已经使用过它,效果很好(原价的30.6%)。

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

答案 2 :(得分:0)

使用MarkerClustererPlus,只需将事件监听器附加到Google地图/users方法:

addListener