2011-10-19 54 views
3

除此之外,我包括在我的网页的头两个脚本:jQuery的谷歌地图加载之前执行:从jQuery和谷歌地图“的地图是未定义”

<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); 
    } 
}); 

这是否意味着内部$(document).ready()placeMarker函数调用尝试前执行地图初始化?在地图初始化后我如何运行placeMarker

=== EDIT ===

根据要求在这里是初始化地图的代码:

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

地图初始化在哪里? –

+0

在$(document).ready()之外的map.js中。它是该文件中唯一不在函数内的代码行。 – Keyslinger

+0

有趣的问题。不过,我们需要一个测试用例来回答它。 –

回答

5

由于窗口负载事件触发document.ready之后。因此你的地图在document.ready之后被初始化。您可以改为将其他代码包装在$(window).load

$(window).load(function(){ 
    your code here 
});