2012-01-13 45 views
1

我有一個使用jQuery Mobile 1和Google Maps API v3的移動網絡應用程序。在Google Maps內部加載jQuery Mobile時,似乎存在嚴重的內存泄漏。當用戶離開地圖頁面時,Google地圖所佔用的內存不會被釋放。因此,當用戶返回到地圖頁面時,內存使用量不斷增加。這在移動網絡瀏覽器中尤其是個大問題。我在Android和桌面版Chrome上測試以下內容。jQuery Mobile和Google Maps API v3內存泄露

導航到:http://www.mycoursewalk.com/mobile_course_walk/show/25

點擊「查看課程」,完全讓地圖加載泄漏可以如下觸發。 然後單擊瀏覽器後退按鈕或左下角的後退按鈕。重新點擊「查看課程」並讓地圖充分加載。 重複。在每個地圖加載中,您看到在Chrome或移動瀏覽器的過程中添加了大約30MB的空間。

我該如何解決這個問題?我找不到Map API卸載。

感謝,

尼克,

回答

0

我覺得每次都呼籲createMap,而不是檢查地圖是否已經存在和對象重新使用。

嘗試這樣:

var mapDisplay = {                                        
    mapCreated : false, 
    init: function() { 
     //some init stuff 
    }, 
    showMap: function() { 
     if(!mapDisplay.mapCreated) { 
      mapDisplay._createMap(); 
      mapDisplay.mapCreated = true; 
     } 
     $("#my_map").show(); 
     $('#my_map').gmap('refresh');                                 
    }, 
    _createMap : function() { 
     //options would be a json config object 
     $('#my_map').gmap(options); 
    }, 
    //all the other methods you need 
} 

這將在this jQuery gmap demo application

使用的庫工作