2012-02-20 60 views
0

我仍在使用google maps v2,并且在遇到google事件时,我无法从firefox获取事件对象。最终,我需要事件对象,以便在特定叠加层的单击事件触发时检索有关按键的信息。这里是一些代码:通过javascript引用firefox事件对象

GEvent.addListener(polys[i], "click", function(e) { 
    var evtObj = window.event? event : e; 
    for (var i=0; i<polys.length; i++) { 
     if (this == polys[i]) { 
      if (evtObj.ctrlKey) { 
       map.closeInfoWindow(); 
       clickCounty(labels[i]); 
      } 
      other stuff to happen.... 
     } 
}); 

这工作正常在IE和Chrome。传递给函数的变量'e'是'click'事件的纬度/经度。那么我将如何引用firefox事件对象而不是google事件lat/long ..?

谢谢!

回答

1

没有很好的方法来做到这一点。我建议将一个事件绑定到polys[i]对象的DOM版本(通常在polys[i].Zk中引用),而不是使用GEvent.addListener。在地图加载后使用渲染对象并附加到该对象可能会更容易,而不是在polys[i].Zk中查找它。

例如,如果你的对象是一个IMG标记,你可以做这样的事情(使用jQuery的简写,即使我知道你有没有标记的使用jQuery):

$('#map-box').on('click', 'img', function(evtObj) { 
    for (var i=0; i<polys.length; i++) { 
    if (this == polys[i].Zk) { 
     if (evtObj.ctrlKey) { 
     map.closeInfoWindow(); 
     clickCounty(labels[i]); 
     } 
     other stuff to happen.... 
    } 
    ... 
}); 

当然,你可能希望在你的选择中更细一些,并且你失去了正常传入的纬度/经度,但如果你真的需要它们,你可以访问其他地方(例如,你可以保持绑定并将坐标缓存到跨绑定使用)。