谷歌地图 v3 鼠标悬停标记信息窗口

66

我已经在stackoverflow和其他论坛以及Google Maps V3 API文档中搜索了答案,但是我找不到如何将标记信息窗口触发事件从click更改为mouseover的方法。

我正在使用包含融合表层的Google库中的演示文件。

您可以缩放聚类并查看位置的小红色圆形标记。 您必须单击才能显示信息窗口。我希望通过悬停来显示信息窗口。

我的演示在这里: http://www.pretravelvideo.com/gmap2/

functions.js文件在这里完成大部分工作: http://www.pretravelvideo.com/gmap2/functions.js


你要寻找的事件是mouseover,它对你没有作用吗? - Mano Marks
我甚至看不到在点击你的红色标记时信息窗口出现。 - duncan
3个回答

161

4
如果我想从信息窗口复制一些文本怎么办?我希望只要我的鼠标在标记或信息窗口上方,信息窗口就会保持打开状态。因此,在标记上执行mouseout侦听器行不通 :( - Kedor
@Kedor 将mouseout事件监听器更改为在信息窗口上而不是标记上。 - duncan
这对我有效,但是背后的工作原理是什么?即使我在for循环中拥有它,'this'如何获取标记的引用? - some_groceries
1
@lostchild 很好的问题。我的理解是,this是对事件监听器所附加到的任何对象的引用,即在这种情况下它是marker的简写。在这个例子中,使用this而不是marker没有真正的优势。但是,如果您有一个可以附加到各种对象的事件监听器函数(例如,如果我们在折线上使用相同的函数来处理鼠标悬停事件),那么引用marker就没有意义了,不太具体的this会更合适。 - duncan

9
var icon1 = "imageA.png";
var icon2 = "imageB.png";

var marker = new google.maps.Marker({
    position: myLatLng,
    map: map,
    icon: icon1,
    title: "some marker"
});

google.maps.event.addListener(marker, 'mouseover', function() {
    marker.setIcon(icon2);
});
google.maps.event.addListener(marker, 'mouseout', function() {
    marker.setIcon(icon1);
});

5
感谢duncan的回答,我最终得到了这个结果:
marker.addListener('mouseover', () => infoWindow.open(map, marker))
marker.addListener('mouseout', () => infoWindow.close())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接