我有一个谷歌地图版本3,我不能按我的意愿工作。当地图打开时,页面上有几个标记,点击或悬停在标记上会打开一个带有酒店名称的信息框。单击另一个标记将关闭第一个InfoBox并在新标记上打开一个新标记。关闭最后一个InfoBox会出现问题。
如果我在选项中允许使用closeBox,那么当InfoBox的其余部分关闭时,closeBox(正方形中的小十字)会留在屏幕上。这仅在InfoBox关闭时才会发生,因为另一个已打开。由于我找不到解决方案,我打算取消closeBox并让用户点击地图的空白区域以摆脱最终的InfoBox。但是,目前,这也不起作用。
问题页面可以在http://www.littlehotels-testdomain.co.uk/spain/abadia.php看到(点击图片右侧的“查看此酒店的位置图”)。
应该使这项工作的代码是:
google.maps.event.addListener(hotelmarker, 'mouseover', function() {
var ib = new InfoBox(ibOptions);
boxText.innerHTML = hotelname;
ib.open(map, hotelmarker);
});
google.maps.event.addListener(map, 'click', function() {
ib.close(map, hotelmarker);
});
我错过了第二个事件监听器中的某些内容吗?
答案 0 :(得分:5)
您需要使您的ib(infoBox参考)全局化。把它放在听众函数之外。
答案 1 :(得分:5)
Andy的第47条JavaScript编程规则:永远不要使用全局变量来完成使用jQuery使用单行完成的任务:
$(".infoBox").hide();