2014-09-24 39 views
-1

Google Maps API v3提供addDomListener來捕獲DOM中的事件。我對'click'事件的實現似乎是在DOM的'load'事件上進行的。addDomListener觸發'load'而不是'click'

我想聽聽可能會導致此問題的反饋。

<script> 
function initialize() { 
    var map = new google.maps.Map(document.getElementById('map-canvas'), { 
     mapTypeId: google.maps.MapTypeId.TERRAIN 
    }); 

    bounds = addMarkers(buildClosed(), map, 1); 

    map.fitBounds(bounds); 

    var button = document.getElementById('show_or_hide'); 
    // google.maps.event.addDomListener(button, 'click', addMarkers(buildOpened(), map, 1)); 
    google.maps.event.addDomListener(button, 'click', showAlert(event)); // returns 'load' event 

} 

function showAlert(_e) { 
    window.alert('Event: ' + _e.type); 
} 

(all other functions here) 

google.maps.event.addDomListener(window, 'load', initialize); 

</script> 

<input id="show_or_hide" type="button" value="Show all crossings" /> 
<div id="map-canvas"></div> 

回答

0

addDomListener需要一個函數指針。如果您提供帶參數的函數,它將執行該函數並將返回值用作點擊執行的函數。

變化:

google.maps.event.addDomListener(button, 'click', showAlert(event)); 

到:

google.maps.event.addDomListener(button, 'click', showAlert); 
+0

優秀。謝謝。現在,我的挑戰是調用我的addMarkers()函數,並且仍然能夠傳遞參數而不用在加載時調用。 – fslap 2014-09-24 16:12:43