3

我有一个谷歌地图版本 3,我无法按我的意愿工作。当地图打开时,页面上有几个标记,单击或悬停在标记上会打开一个带有酒店名称的小信息框。单击另一个标记会关闭第一个信息框并在新标记上打开一个新信息框。问题在于关闭最后一个信息框。

如果我在选项中允许 closeBox,则在关闭 InfoBox 的其余部分时,closeBox(正方形中的小十字)会留在屏幕上。这只发生在信息框因打开另一个信息框而关闭时。由于找不到解决方案,我打算取消 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);
    });

我缺少第二个事件侦听器中的某些内容吗?

4

2 回答 2

5

您需要使您的 ib(信息框参考)全球化。把它放在你的 Listener 函数之外。

于 2012-07-02T15:27:14.797 回答
5

Andy 的 JavaScript 编程第 47 条规则:永远不要使用全局变量来完成使用 jQuery 只需一行代码就能完成的事情:

$(".infoBox").hide();
于 2012-09-25T11:14:27.360 回答