1

我阅读了很多解决方案并尝试了几个,但在我的脚本中我无法完成它。

我喜欢在单击另一个标记时关闭活动的信息窗口。

部分代码:

        for (var i = 0; i < locations.length; i++) {
          var centrum = locations[i];
          var myLatLng = new google.maps.LatLng(centrum[1], centrum[2]);
          var marker = new google.maps.Marker({
              position: myLatLng,
              map: map,
              animation: google.maps.Animation.DROP,
              icon: image,
              shape: shape,
              title: centrum[0],
              zIndex: centrum[3]
          });
          marker['infowindow'] = new google.maps.InfoWindow({
              content: '<b>Informatie:</b><br>' + centrum[0]
          });
          google.maps.event.addListener(marker, 'click', function() {
              marker['infowindow'].close(); // has to close another active window
              this['infowindow'].open(map, this);
          });
        }

有人提示或更好......解决方案?

谢谢。

4

2 回答 2

3

将标记保存在数组中,并在打开当前窗口之前添加对关闭所有窗口的函数的调用:

function closeInfos() {
    for(var i=0; i<markers.length; i++)
    {
        markers[i]['infowindow'].close();
    }
}

编辑:

使用您的代码,它应该看起来像这样:

var markers = [];
for (var i = 0; i < locations.length; i++) {
          var centrum = locations[i];
          var myLatLng = new google.maps.LatLng(centrum[1], centrum[2]);
          var marker = new google.maps.Marker({
              position: myLatLng,
              map: map,
              animation: google.maps.Animation.DROP,
              icon: image,
              shape: shape,
              title: centrum[0],
              zIndex: centrum[3]
          }));
          marker['infowindow'] = new google.maps.InfoWindow({
              content: '<b>Informatie:</b><br>' + centrum[0]
          });
          markers.push(marker);
          google.maps.event.addListener(marker, 'click', function() {
              closeInfos();
              this['infowindow'].open(map, this);
          });
        }
于 2013-01-30T19:25:54.803 回答
1

通过将 infowindow 存储到变量中,只保留一个对 infowindow 的引用,例如:

var infowindow = new google.maps.InfoWindow({content: "some text here..."});

这就是这样做的方法,现在您正在创建该类的许多实例..

查看完整的小提琴

编辑:

具有独特内容小提琴的信息窗口

于 2013-01-30T19:24:08.670 回答