是否可以为样式地图显示的图标和/或标签上的单击事件添加侦听器?我有一个允许输入兴趣点的表格。由于 poi 样式显示了许多潜在候选人的图标和/或标签,并且单击一个会打开一个包含地址信息等的信息窗口,如果用户单击一个,我想将此地址信息捕获到我的表单上的字段中。
问问题
1520 次
2 回答
8
没有基于 API 的对 POI 的访问。
但是有一个可能的解决方法。
当您单击 POI 时,会打开一个信息窗口。可以修改 InfoWindow 原型,以便能够访问 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/
注意:信息窗口的选择器没有记录,它们将来可能会改变
于 2014-01-31T19:40:44.683 回答
4
我意识到这是一个旧的 Q,但最近在 Maps API 中修复了这个问题。您现在可以监听地图图标上的点击事件。
从 3.26 版开始,您应该监听 Map 对象上的“click”事件。如果用户单击 POI,则会引发 IconMouseEvent。该类扩展了Regular MouseEvent 并包含一个名为placeId 的属性。因此您可以检查事件对象是否已定义 placeId。placeId 字段当然包含一个 Place Id,您可以使用 Places API 来获取有关被点击图标的更多信息。对事件本身调用 stop() 将阻止 Maps API 显示默认信息窗口。
我准备了一个小演示,演示如何捕获点击事件并显示您自己的信息窗口。
于 2016-09-29T14:17:36.407 回答