0

在 Google Maps v3 中,如何关闭所有当前打开的信息窗口?

正如一些人所建议的那样,我不能只跟踪变量中最后打开的信息窗口,因为在我的设置中,每个标记都有唯一的文本,所以我必须将信息窗口绑定到它创建的位置的标记。

_.each(new_companies, function(c) {
  var latLng = new google.maps.LatLng(c.com_d_coo_y_wgs84,
      c.com_d_coo_x_wgs84);
  var marker = new google.maps.Marker({'position': latLng});
  marker.info = new google.maps.InfoWindow({
    content: getTooltipText(c)
  });
  google.maps.event.addListener(marker, 'mouseover', function() {
      marker.info.open(map, marker);
      // How to close all currently open info windows?
  });
  google.maps.event.addListener(marker, 'click', function() {
    marker.info.open(map, marker);
  });
  newco_markers.push(marker);
});

我想我可以遍历所有标记newco_markers并关闭每个标记的信息窗口,但这感觉效率低下。

4

1 回答 1

3

您应该尝试使用一个信息窗口并通过API 方法更新其内容和位置:setPosition() 和 setContent()

编辑:

我假设您一次只需要一个信息窗口。如果您需要多个,那么您可以尝试保留一个映射(对象)或数组,并引用打开的信息窗口。

于 2013-03-07T13:54:21.590 回答