当用户将鼠标移出infowindow时,我想关闭infowindow。但是,在下面的代码中,即使我将鼠标放在infowindow上,它也会在5秒后关闭。是这个错误还是有其他解决方案?
var info = new google.maps.InfoWindow({
content: '<div>Loading...</div>'
});
var bindMarker = function(marker, attr, feature)
{
google.maps.event.addListener(marker, 'mouseover', function(clicked) {
info.setContent(self.createInfoWindowFor(marker, attr, feature));
info.open(self.map, marker);
});
google.maps.event.addListener(marker, 'mouseout', function(){
setTimeout(function(){info.close(self.map, marker);}, '5000');
});
google.maps.event.addListener(marker, 'click', function(clicked) {
info.close(self.map, marker);
});
};
答案 0 :(得分:0)
根据我的理解,您的代码工作正常,您只是想要阻止infowindow消失,如果您将鼠标悬停在infowindow上。
要执行此操作,您需要为超时ID 创建一个全局变量(请参阅https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.clearTimeout)以获取超时功能,因此在代码的顶部:
var infoTimeoutID = null;
然后您需要在拨打setTimeout
时设置超时ID:
infoTimeoutID = setTimeout(function(){info.close(self.map, marker);}, '5000');
然后你想要在显示如下所示的infoWindow时添加一个mouseover
监听器:
function() {
if(infoTimoutId != null) {
window.clearTimeout(infoTimeoutID);
}
}
您还需要添加一个关闭infoWindow的mouseout
处理程序(如果需要)。
答案 1 :(得分:0)
如果我理解正确,你使用setTimeOut有时间将鼠标放在infowindow上,所以它不会在标记的mouseout上关闭。
使用标记的mouseout的Intead尝试鼠标移动地图。这样,如果你将鼠标放在infowindow上,事件mousemove就不会触发,并且可以将鼠标放在infowindow上,而不是关闭它。但是当你在地图上移动时,信息窗会关闭。
google.maps.event.addListener(map, 'mousemove', function (event) {
infowindow1.close();
});