3

我正在为 Google Maps API V3使用Markercluster 插件。当用户单击群集图标时,我想访问单击事件。我能到的最接近的是

JS代码

google.maps.event.addListener(mc, "clusterclick", function (cluster) {
    event.stopPropagation();
});

问题: event.stopPropagation()仅在 Chrome 中有效,在 Firefox 或 IE 中无效。它只有在传递一个event对象作为参数添加到函数时才能工作,如下所示:

$("#div").click(function(event) { 
    event.stopPropagation();
}

但是,我不知道 MarkerClusterer 创建的集群图标的 DOM 元素,所以我无法选择它!我应该怎么办?

4

2 回答 2

3

见这里:https ://developers.google.com/maps/documentation/javascript/events#EventArguments

google.maps.event.addListener(map, 'click', function(event) { placeMarker(event.latLng); });

事件回调的第一个参数是事件对象。在您的情况下,它将是:

google.maps.event.addListener(mc, "clusterclick", function (cluster) {     
    cluster.stopPropagation();     
});

由于这是一个自定义事件并且程序员没有将事件对象作为参数传递,您的解决方案是自己实现它:

来自http://code.google.com/p/google-maps-utility-library-v3/source/browse/trunk/markerclustererplus/src/markerclusterer.js?r=362的第 150 和 151 行

从:

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

至:

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

注意e作为第三个参数。这是在第 139行调用这 2 行的原始事件中的事件对象:

google.maps.event.addDomListener(this.div_, "click", function (e) {
于 2012-04-04T22:55:03.200 回答
1

您可以尝试使用return false;. 尽管这都停止了事件冒泡以及默认行为。所以我不知道你是否可以在你的具体情况下使用它。

更新

clusterclick事件已弃用。您应该使用该click事件。

您是否已经尝试过做.stopPropagtionand .cancelBubble = true

于 2012-04-04T22:40:00.000 回答