2015-09-21 77 views
0

我已經實現了自定義覆蓋。我想添加一個事件,當我點擊疊加層時會彈出一個信息窗口。如何爲自定義疊加添加信息窗口?

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

我添加了infoWindow函數裏面的標記繪製函數,我正在繪製我的自定義div作爲標記。它顯示infoWindow,但它的位置受到干擾。 –

回答

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"); 
}); 
相關問題