在Google Maps v3中,如何关闭所有当前打开的信息窗口?
我不能只跟踪变量as some have suggested中最后打开的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
中的所有标记并关闭每个标记,但这感觉效率低下。
答案 0 :(得分:3)
你应该尝试使用一个infowindow并通过API methods更新它的内容和位置:setPosition()和setContent()
编辑:
我假设你一次只需要一个信息窗口。如果您需要多个,那么您可以尝试使用对打开的信息窗口的引用来保持地图(对象)或数组。