我需要将信息窗口显示在鼠标悬停在标记上的位置。我想在鼠标不在信息窗口本身之外的任何位置时关闭信息窗口。我需要这样做是因为,我在信息窗口上有一个超链接,并且用户应该能够单击该超链接。现在我有以下代码:

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/

10-10 20:22