我仍在使用谷歌地图v2,当谷歌事件触发时,我很难从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
事件的lat/long。那么,我该如何引用Firefox事件对象而不是Google事件lat/long..呢。。?
没有什么好方法可以做到这一点。我建议将事件绑定到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....
}
...
});
当然,您可能希望在选择中更精细一点,并且会丢失通常传递的lat/lon,但如果您真的需要,您可以在其他地方访问这些lat/lon(例如,您可以保留addListener
绑定并缓存要在绑定之间使用的坐标)。