2010-06-26 28 views
2

我如何可以加載谷歌地圖這樣的:訪問谷歌地圖變量通過jQuery的

function loadScript() { 
    var script = document.createElement("script"); 
    script.setAttribute("src", "http://maps.google.com/maps?file=api&v=2.x&key=ABQIAAAAAXN1Nhid00zgr5mrYEM7MhQE7kuAsiuX3WD62vgNgdNYG4wQzhQs7fQD8XzGkuXLIejRfouX3li8xg&async=2&callback=loadMap"); 
    script.setAttribute("type", "text/javascript"); 
    document.documentElement.firstChild.appendChild(script); 
} 
function loadMap(){ 
    var map = new GMap2(document.getElementById("google_map")); 
} 

$(document).ready(function(){ 
    loadMap(); 
    //How I can access the map variable here ? 
}); 

而且通過jQuery訪問地圖變量?

我得到一個未定義的錯誤,因爲當我嘗試訪問地圖變量時,它尚未定義。

回答

2

你不能這樣。 map在本地聲明爲loadMap,您無法在該函數外訪問它。此外,您必須先執行loadScript。順便說一句,不要使用setAttribute來設置srctype

使用在外側範圍(優選不全局範圍)聲明的變量,而不是一樣

<script> 
    function loadScript() { 
     var script = document.createElement("script"); 
     script.src = "http://maps.google.com/maps?file=api&v=2.x&key=ABQIAAAAAXN1Nhid00zgr5mrYEM7MhQ 
     script.type = "text/javascript"; 
     document.documentElement.firstChild.appendChild(script); 
    } 

    loadScript(); 
</script> 
<!-- close script element here to update DOM --> 
<script> 
    var map; // declared outside loadMap 

    function loadMap(){ 
     map = new GMap2(document.getElementById("google_map")); 
    } 

    $(document).ready(function(){ 
     loadMap(); 
     // Now map is available here 
    }); 
</script> 
+0

第一行和最後一行,我得到一個有關未定義的loadMap()錯誤的錯誤,但是當我註釋掉第一行和最後一行時,它完美地起作用 – astropanic 2010-06-26 17:09:14

+0

@astropanic:是的,那是因爲'documentReady'函數是在自我執行的匿名功能結束。現在你污染了全球範圍多一點,但它的作品。 – 2010-06-26 17:13:58

2

變化map變量的範圍,說其聲明外loadMap()功能 修改loadMap()功能,

 var map; 
    function loadMap(){ 
      loadScript() ; 
      map = new GMap2(document.getElementById("google_map")); 
     } 
+0

@Marcel Korpel,是編輯。 – 2010-06-26 17:06:08