我试图通过简单的按钮点击初始化地图加载,但没有运气。此外,javascript控制台中不会抛出任何错误。
如果我将其更改为var showMap = $('#show-map');
function initialize() {
var mapOptions = {
center: { lat: 0, lng: 0 },
zoom: 8
};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
}
google.maps.event.addDomListener(showMap, 'click', initialize);
,则可以正常使用。
#map-canvas {
height: 30em;
width: 30em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCgxY6DqJ4TxnRfKjlZR8SfLSQRtOSTxEU"></script>
<button id="show-map">Show Map</button>
<div id="map-canvas"></div>
Method[validateOnOrAfter]
答案 0 :(得分:6)
不使用android:name
处理程序作为按钮,而是使用jQuery事件侦听器。即使可以为其余的DOM使用Google地图事件处理程序,但最好还是使用jQuery。另外,我认为SebastiánRojas对使用google.maps.event
提出了很好的建议。
这是Fiddle。与原始代码的唯一变化是:
window.onload
此代码会一直等到加载$(document).ready(function(){
$('#show-map').on('click',initialize)
});
,然后它会将事件监听器分配给按钮(document
),以便在单击它时执行#show-map
。
答案 1 :(得分:5)
您无法替换初始化事件,因为加载窗口和Google Maps API也很重要。所以,相反,将dom监听器保留为文档建议,当事件被触发时,将事件监听器附加到按钮单击以显示地图
function initialize() {
//Add the event listener after Google Mpas and window is loaded
$('#show-map').click(function () {
var mapOptions = {
center: { lat: 0, lng: 0 },
zoom: 8
};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
&#13;
#map-canvas {
height: 30em;
width: 30em;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCgxY6DqJ4TxnRfKjlZR8SfLSQRtOSTxEU"></script>
<button id="show-map">Show Map</button>
<div id="map-canvas"></div>
&#13;
答案 2 :(得分:0)
作为快速解决方案,这将有效:
var map = document.getElementById('show-map')
google.maps.event.addDomListener(map, 'click', initialize);