2011-09-02 60 views
16

我在顯示GoogleMap時遇到問題。GoogleMap offsetWidth問題

下面是該網站的源代碼:http://pastebin.com/LjhVbEF7

當我試圖運行這個網站,不顯示地圖。 螢火蟲控制檯說Uncaught TypeError: Cannot read property 'offsetWidth' of null

你有什麼想法我做錯了什麼?我知道網上有許多工作示例,但是這些代碼是由特殊腳本生成的,我無法對其進行太多的干預。也許我忘了設置一些變量?

感謝, 麥克

=================

編輯: 此代碼是唯一的工作時,我就會把JS在函數定義並在正文onload參數中調用它。你有什麼想法,我怎麼能使它不使用這樣的功能和onload參數工作?

回答

21

我意識到這可能是一個有點晚了 - 但我希望它能夠幫助別人了:

在你的情況初始化函數沒有被觸發,儘管它也可能是由未在容器div上設置寬度和高度屬性引起的。如果你不想簡單地加載事件添加到您可以使用下面的jQuery的身體標記:

//Add onload to body 
$(window).load(function(){ 
    initialize() 
}); 
+0

如果您使用的是單頁應用程序,會有什麼選擇? –

+0

我想你只需要調用初始化,一旦你使用的部分完全加載。 – Chris

1

不知道,但它可能是這條線

map_4e60b1f9c94ae.setCenter(new google.maps.LatLng(0, 0, 1)); 

我覺得new google.maps.LatLng只需要兩個屬性,緯度和經度。

嘗試從地圖網站該位

var latlng = new google.maps.LatLng(-34.397, 150.644); 

http://code.google.com/apis/maps/documentation/javascript/tutorial.html

+0

不是這樣,但我發現了新的東西。請在主帖子中查看編輯:) – mbajur

1

嘗試將JavaScript代碼的身體和AFTER div id="map_canvas"

事情是這樣的:

<body> 
    <div id="map_canvas"></div> 

    <script type="text/javascript"> 
     var map_4e60b1f9c94ae = new google.maps.Map(document.getElementById("map_canvas"), {"mapTypeId":"roadmap","zoom":10}); 
     map_4e60b1f9c94ae.setCenter(new google.maps.LatLng(0, 0, 1)); 
    </script> 
</body> 
2

你可能在AngularJS工作嗎?我是,而且這個問題通過所有上述解決方案仍然存在。原因是我找到地圖div的部分時間沒有完成,因此div爲空,因此出現了錯誤。

見角的方式來電來訪的GoogleMaps:

Initialize Google Map in AngularJS

2

大部分時間我得到這個錯誤正是由於我指的是在getElementById元素不是在頁面上或我使用了錯誤的ID。明顯的錯誤,但請務必在深入研究更高級的解決方案之前仔細檢查。