当我在初始化函数中调用codeAddress函数时,它会被调用,但是当它在其他地方时,如下例所示,它不会被调用。错误是什么?
var geocoder;
var map;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(-34.397, 150.644);
var mapOptions = {
zoom: 8,
center: latlng
}
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
}
function codeAddress() {
var marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(-34.397, 150.644)
});
}
google.maps.event.addDomListener(window, 'load', initialize);
codeAddress();
答案 0 :(得分:0)
它发生了这种情况,因为在窗口完全加载后初始化了地图,因为当窗口开始加载时会立即执行codeAddress。在codeAddress中添加警报,您将自己解决。此外,当地图正确初始化时,我应该对地图进行任何操作。为此,请使用map idle listener来调用codeAddress。
答案 1 :(得分:0)
codeAddress
函数要求之前执行initialize
函数,因为在codeAddress
中您引用了在{{1}中初始化的全局变量map
}}
该行
initialize
将google.maps.event.addDomListener(window, 'load', initialize);
注册为一个在DOM加载后立即执行的回调。但是当您在下一行调用initialize
时,DOM可能尚未加载,因此codeAddress();
可能尚未执行。
因此,调用initialize
将在codeAddress
内部工作,但不在您的示例中。