当鼠标离开标记和信息框区域时,我希望关闭信息框。 问题是,我试图检查鼠标是否在信息框上方的方式不起作用。
编辑: 这是我使用的功能:
google.maps.event.addListener(marker, 'mouseout', (function(marker, contentString) {
return function() {
ib.close();
};
})(marker, contentString));
答案 0 :(得分:4)
首先,您的信息框与标记重叠,因此一旦打开,它将在标记上产生mouseout
,并立即将其关闭。
因此您还需要向信息框元素添加事件。
您可以在信息框的domready
事件上执行此操作,因为它会动态添加到DOM中。
然后你需要延迟标记的mouseout事件,如果用户鼠标移动信息框,你将清除它。
像这样的东西
var ibTimeout;
google.maps.event.addListener(marker, "mouseover", function (e) {
ib.open(theMap, this);
});
google.maps.event.addListener(marker, "mouseout", function (e) {
ibTimeout = setTimeout(function(){
ib.close();
}, 50);
});
google.maps.event.addListener(ib, 'domready', function(e){
$('.infobox').on('mouseenter', function(e){
clearTimeout(ibTimeout);
}).on('mouseleave', function(e){
clearTimeout(ibTimeout);
ib.close();
});
});
演示
答案 1 :(得分:0)
google.maps.event.addListener(marker, 'mouseout', (function() {
infowindow.close();
});
google.maps.event.addListener(infowindow, 'mouseout', (function() {
this.close();
});