4

是否可以为样式地图显示的图标和/或标签上的单击事件添加侦听器?我有一个允许输入兴趣点的表格。由于 poi 样式显示了许多潜在候选人的图标和/或标签,并且单击一个会打开一个包含地址信息等的信息窗口,如果用户单击一个,我想将此地址信息捕获到我的表单上的字段中。

4

2 回答 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 显示默认信息窗口。

我准备了一个小演示,演示如何捕获点击事件并显示您自己的信息窗口。

http://jsbin.com/parapex/edit?html,输出

于 2016-09-29T14:17:36.407 回答