Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否关闭Google Maps v3中当前打开的所有信息窗口?_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 是否关闭Google Maps v3中当前打开的所有信息窗口?

Javascript 是否关闭Google Maps v3中当前打开的所有信息窗口?,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,在Google Maps v3中,如何关闭所有当前打开的信息窗口 我不能只跟踪变量中最后打开的infowindow,因为在我的设置中,每个标记都有唯一的文本,因此我必须在创建infowindow的位置将其绑定到标记 _.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 v3中,如何关闭所有当前打开的信息窗口

我不能只跟踪变量中最后打开的infowindow,因为在我的设置中,每个标记都有唯一的文本,因此我必须在创建infowindow的位置将其绑定到标记

_.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
中的所有标记,并关闭每个标记的信息窗口,但这感觉效率低下

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

编辑:


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

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

编辑:


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

这是最佳解决方案-您需要多个infowindow对象的唯一原因是如果您必须同时打开多个infowindow,不幸的是,我认为这行不通,因为如果我尝试在循环中使用
infowindow.setContent(getTooltipText(c))
设置内容,我最终会将相同的文本绑定到每个标记。啊,算出了-将内容设置为
marker
的属性,然后
infowindow.setContent(marker.content)
。谢谢对于堆栈溢出这个问题,有几种不同的答案。这是正确的。它首先解决了为什么要打开多个infowindow的问题。这是最好的解决方案-您需要多个infowindow对象的唯一原因是如果您必须同时打开多个infowindow不幸的是,我认为这行不通,因为如果我尝试在循环中使用
infowindow.setContent(getTooltipText(c))
设置内容,我最终会将相同的文本绑定到每个标记。啊,算出了-将内容设置为
marker
的属性,然后
infowindow.setContent(marker.content)
。谢谢对于堆栈溢出这个问题,有几种不同的答案。这是正确的。它首先解决了为什么要打开多个信息窗口的问题