除了jQuery和Google Maps之外,我的页面头部还包含两个脚本:
<script src="js/map.js" type="text/javascript"></script>
<script src="js/site.js" type="text/javascript"></script>
map.js包含初始化我的地图的代码,还有以下函数在其上放置标记:
function placeMarker(marker){
clearLocations();
var latlng = new google.maps.LatLng(
parseFloat(marker.lat),
parseFloat(marker.lng)
);
var marker = createMarker(latlng);
map.setZoom(14);
var latLng = marker.getPosition();
map.setCenter(latLng);
}
当我在site.js中调用placeMarker
内的$(document).ready()
时,我收到错误,“地图未定义”。但是当我在site.js中调用另一个在单击按钮时执行的函数时,placeMarker
在其回调中运行时没有问题:
$.ajax({
url: 'ajax/json.php',
dataType: 'json',
data: 'search_string='+inpMapSearch+'&country='+Country,
success: function(data) {
console.log(data);
placeMarker(data);
}
});
这是否意味着placeMarker
内的$(document).ready()
函数调用在初始化映射之前尝试执行?初始化地图后如何运行placeMarker
?
===编辑===
根据请求,这里是初始化地图的代码:
google.maps.event.addDomListener(window, 'load', load);
function load() {
map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(18.735693,-70.162651),
zoom: 8,
mapTypeId: 'roadmap',
mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}
});
}
答案 0 :(得分:5)
因为窗口加载事件在<{strong> document.ready
之后触发。因此,您的地图在document.ready之后初始化。您可以将其他代码包装在$(window).load
$(window).load(function(){
your code here
});