我需要将信息窗口显示在鼠标悬停在标记上的位置。我想在鼠标不在信息窗口本身之外的任何位置时关闭信息窗口。我需要这样做是因为,我在信息窗口上有一个超链接,并且用户应该能够单击该超链接。现在我有以下代码:
marker.addListener('mouseover', function() {
infowindow.open(map, marker);
}, false);
marker.addListener('mouseout', function() {
infowindow.close(map, marker);
}, false);
这是行不通的,因为在我从信息窗口中关闭标记的那一刻起,信息窗口就熄灭了。
请告诉我。
谢谢
最佳答案
您的问题分为三个部分:
为标记的mouseover
事件的处理程序设置超时,以使InfoWindow在您将鼠标移到它之前不会消失。
如果鼠标进入信息窗口,则清除该超时:
var closeInfoWindowWithTimeout;
marker.addListener('mouseout', function() {
closeInfoWindowWithTimeout = setTimeout(() => infowindow.close(map, marker), 1000);
}, false);
infoWindowElement.mouseover(() => clearTimeout(closeMarkerInfoWithTimeout));
在
mouseleave
内容的父对象的父对象的父对象上设置InfoWindow
事件。我知道它很脏,并且取决于Google Maps如何实现InfoWindow,但这是您现在所能做的。请注意,在将InfoWindow附加到您的dom之后,应该执行此操作!您可以通过侦听InfoWindow的
domready
事件来等待它:infowindow.addListener('domready', () => {
infowindowelement.parent().parent().parent().mouseleave(() => infowindow.close(map, marker));
});
请注意,您应该使用Element来初始化InfoWindow的内容(此处使用变量
infoWindowElement
)。关于javascript - 如何让信息窗口停留在Google map 中标记的鼠标移出位置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32006868/