是否可以在为样式化地图显示的图标和/或标签上添加click事件的侦听器?我有一个允许进入兴趣点的表格。由于poi样式显示许多潜在候选人的图标和/或标签,并且点击一个打开带有地址信息等的信息窗口,我想将此地址信息捕获到我的表单上的字段,如果用户点击一个。 / p>
答案 0 :(得分:8)
对POI没有基于API的访问权限。
但是有一种可能的解决方法。
当您点击POI时,InfoWindow会打开。可以修改InfoWindow-prototype,以便能够访问InfoWindow的内容,而无需引用InfoWindow实例。
//store the original setContent-function
var fx = google.maps.InfoWindow.prototype.setContent;
//override the built-in setContent-method
google.maps.InfoWindow.prototype.setContent = function (content) {
//when argument is a node
if (content.querySelector) {
//search for the address
var addr = content.querySelector('.gm-basicinfo .gm-addr');
if (addr) {
alert(addr.textContent);
//leave the function here
//when you don't want the InfoWindow to appear
}
}
//run the original setContent-method
fx.apply(this, arguments);
};
演示:http://jsfiddle.net/doktormolle/Vkf43/
注意:infowindow的选择器没有记录,将来可能会改变
答案 1 :(得分:4)
我意识到这是旧Q,但最近在Maps API中修复了这个问题。您现在可以在地图图标上收听点击事件。
从版本3.26开始,你应该听到"点击" Map对象上的事件。如果用户单击POI,则会引发IconMouseEvent。此类扩展了Regular MouseEvent,并包含一个名为placeId的属性。因此,您可以检查事件对象是否已定义placeId。 placeId字段当然包含Place Id,您可以使用Places API获取有关所单击图标的更多信息。在事件本身上调用stop()将阻止Maps API显示默认信息窗口。
我准备了一个小型演示,演示如何捕获click事件并显示您自己的信息窗口。