2010-04-11 84 views
1

這裏的問題是:jQuery的谷歌地圖問題

比方說,應要求可加載谷歌地圖和隱藏一個jQuery切換按鈕它後,當切換:

$('#showmeMap').toggle(function() 
{ 
    var map = new GMap2($("#map").get(0)); 
    var mapCenter = new GLatLng(-2, 20); 
    map.setCenter(mapCenter, 12); 
    $('#map').show(); 
} 
}, function() { 
$('#map').hide(); 
}); 

然後,添加一些隨機指標和後來另一個功能,從地圖中刪除標記:

$('#destroyMarkersButton').click(function() { 
    for (var i=0; i<gmarkers.length; i++) 
    { 
    map.removeOverlay(gmarkers[i]); 
    } 
    }); 

當點擊按鈕我有錯誤地圖是未定義的。我的想法是全球定義谷歌地圖對象:

map = new GMap2($("#map").get(0)); 

這在Firefox中完美工作,但是,地圖無法加載Internet Explorer!

有什麼建議嗎?

回答

2

無論是在功能包裝都這樣你就可以通過關閉到map(他們應該已經因爲無論如何,你應該對這些做的document.ready):

$(function() 
{ 
    var map; 
    $('#showmeMap').toggle(function() 
    { 
     map = new GMap2($("#map").get(0)); 
     // ... 
    }); 

    $('#destroyMarkersButton').click(function() { 
     // ... 
    }); 
}); 

或者,你可以定義各種各樣的命名空間(通常我都這樣了這個庫,做它遞歸的,而不是直接):

if (window.myApp === undefined) 
    window.myApp = {}; 
var appNS = window.myApp; 

然後,您可以使用該命名空間有信心,它會通過保持整個頁面,因爲它直接關係到window

$('#showmeMap').toggle(function() 
{ 
    appNS.map = new GMap2($("#map").get(0)); 
    // ... 
}); 

等。

0

好,回答過的問題..似乎與IE中的變量名的ID衝突...笑

只是改變了id來#mapContainer

問題解決了,

+0

不要忘記標記這是接受的答案然後 – Anurag 2010-04-11 18:36:53