2013-05-08 59 views
2

我已經4 jQuery tabs,在第二個選項卡我展示map使用openlayers library然後我收到以下錯誤獲取麻煩裝載的OpenLayers jQuery的標籤映射

Uncaught TypeError: Cannot call method 'clone' of null // onload error 
Uncaught TypeError: Cannot read property 'w' of null // getting this error when zooming-in and out 

我想我的代碼錯在哪裏初始化openlayers map objectsomewhere,但實際上與jQuery tabs有關。如果我將map div放在第一個標籤中,那麼它會按預期顯示map

我試過this,但在第二個標籤中放置map div時沒有解決問題。

更新以下內容:

如果我寫的map object創造那麼它在chrome工作正常後jQuery tabs代碼,但在firefox映射自毀。

在執行用戶定義函數後,我們如何調用初始化jQuery tabs

+0

也許這是關係到地圖加載div的大小,有它的一些預設大小何時加載地圖?寬度和高度必須大於零。 – 2013-05-08 15:48:54

+0

我已經檢查過寬度和高度,兩個值都大於零。它對'jQuery選項卡'的麻煩,我認爲'display:none'正在添加到'map div'中。 – 2013-05-09 04:31:35

回答

1

當你輸入到tab時,你可以初始化你的地圖。

創建你的標籤是這樣的:

$("#tabs").tabs({ 
    activate: function(event ,ui){ 
      if(ui.newTab.index() == 1)// tab number start from 0 
      { 
        init(); // map initial function 
      } 
    } 
}); 

,並定義init()這樣的:

var map; //global variable 
function init() 
{ 
    if(map) //for create only one map 
    { 
     return false; // if map exists it return and do not create another map 
    } 
    ... 
    ... 
} 
+1

這是第一次,但當你再次點擊選項卡時,它會創建第二個地圖,再次點擊創建第三個地圖,等等。 – user1919 2015-03-30 13:10:17

+1

@dkear檢查我的編輯,也許它修復你的問題。 – 2015-03-30 20:01:55