我已经实现了自定义叠加层。我想添加一个事件,当我点击叠加层时会弹出一个信息窗口。
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);
});
}
}
但它不起作用!
答案 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");
});