Javascript 是否关闭Google Maps v3中当前打开的所有信息窗口?
在Google Maps v3中,如何关闭所有当前打开的信息窗口 我不能只跟踪变量中最后打开的infowindow,因为在我的设置中,每个标记都有唯一的文本,因此我必须在创建infowindow的位置将其绑定到标记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
_.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)
。谢谢对于堆栈溢出这个问题,有几种不同的答案。这是正确的。它首先解决了为什么要打开多个信息窗口的问题