如何为自定义叠加层添加信息窗口?

时间:2015-09-21 09:51:22

标签: maps overlay infowindow

我已经实现了自定义叠加层。我想添加一个事件,当我点击叠加层时会弹出一个信息窗口。

function initMap() {
  var map = new google.maps.Map(document.getElementById('okmap'), {
    zoom: 4,
    center: {lat: 35.0000, lng: 103.0000}
  });

  for (var n in nodes) {
      var myMarker = new MyMarker(map, {latlng: new google.maps.LatLng(nodes[n][0], nodes[n][1]), 
                                    image: 'assets/img/light-green.png',
                                    labelText: (Math.random() * 100).toFixed(0)});
      markers.push(myMarker);
      var infowindow = new google.maps.InfoWindow({
          content: n
      });
      myMarker.addListener('click', function() {
          infowindow.open(map, myMarker);
      });
  }
}

但它不起作用!

1 个答案:

答案 0 :(得分:0)

一段时间后我遇到了一个类似的问题。这有两件事对我有所帮助。 我认为主要的叠加元素是div

MyMarker.draw函数中,确保您使用的窗格可以访问DOM事件。

    var panes = this.getPanes();
    panes.overlayMouseTarget.appendChild(div);

有关详细信息,请参阅https://developers.google.com/maps/documentation/javascript/customoverlays#initialize

确保在MyMarker.draw函数中定义事件监听器。

google.maps.event.addDomListener(div, "click", function(event) {
    google.maps.event.trigger(self, "click");
});