我在我的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));
});
});
到目前为止,一切都很好。问题是:如果用户点击群集,我如何捕获点击事件?
答案 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.js
和markerclusterer_packed.js
)。进行编辑后,您可以使用UglifyJS重新创建_packed.js
版本,方法是将其粘贴到此网站中。我已经使用过它,效果很好(原价的30.6%)。
有关如何修复该脚本中的'mouseover'
和'mouseout'
事件的详细信息,请参阅我的其他SO post。
答案 2 :(得分:0)
使用MarkerClustererPlus,只需将事件监听器附加到Google地图/users
方法:
addListener