6

我已经按照 google 文档的说明对我的覆盖对象进行了子类化,我的 onAdd() 函数如下所示:

MyOverlay.onAdd() {
    var div_parent = document.createElement("DIV");
    var div_child = document.createElement("DIV");
    div_child.innerHTML = "Click Me";
    div_parent.appendChild( div_child );
    this.getPanes().overlayLayer.appendChild(div_parent);
    var this = that;
    google.maps.event.addDomListener( div_parent, 'click', function(){
        google.maps.event.trigger(that, 'click'); // from [http://stackoverflow.com/questions/3361823/make-custom-overlay-clickable-google-maps-api-v3]
        alert("Clicked");
    } );

}

我的代码只能在 IE 中正常运行,但在 Firefox 和 Chrome 中,将不再触发点击事件。

那么如何解决问题呢?

4

3 回答 3

8

而不是使用overlayLayer mapPanes,您应该使用overlayMouseTarget。

参考:http ://code.google.com/apis/maps/documentation/javascript/overlays.html#CustomOverlays

于 2011-09-28T13:30:22.590 回答
4

我知道这是一篇旧帖子,但如果您想知道,这里是解决方案:

在上面的代码中,您需要从以下位置更改覆盖功能:

this.getPanes().overlayLayer.appendChild(div_parent);

至:

this.getPanes().overlayMouseTarget.appendChild(div_parent);

于 2012-06-12T12:49:30.217 回答
1

另请注意,即使您使用覆盖窗格,您的单击事件也会在桌面上捕获,但要使触摸事件起作用,则需要鼠标目标窗格。

于 2012-07-16T20:39:42.040 回答