谷歌映射标记,当鼠标离开标记时,关闭信息框和信息框

时间:2014-06-16 14:05:06

标签: google-maps

当鼠标离开标记和信息框区域时,我希望关闭信息框。 问题是,我试图检查鼠标是否在信息框上方的方式不起作用。

编辑: 这是我使用的功能:

google.maps.event.addListener(marker, 'mouseout', (function(marker, contentString) {
        return function() {
            ib.close();
        };
    })(marker, contentString));

2 个答案:

答案 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();
     });
});

http://jsfiddle.net/gaby/t4cPt/39/

演示

答案 1 :(得分:0)

google.maps.event.addListener(marker, 'mouseout', (function() {        
          infowindow.close();
});

google.maps.event.addListener(infowindow, 'mouseout', (function() {        
           this.close();
});