0

我正在開發一個真正放鬆Google地圖的jQuery Mobile應用程序。雖然我反覆嘗試,但似乎無法處理頁面轉換和映射持久性。在jQuery Mobile中加載頁面之間保留Google地圖

我真的很願意這樣做,而我的工作方式就像是某種我不喜歡的骯髒解決方法。

我有這個功能上pageShow運行的地圖頁面:

initMap : function(){ 
    if (!Mapper.map || !$('#canvasMapa div').length){ // Or has been removed weirdessly 
     var mapOptions = { 
      zoom : 13, 
      center: new google.maps.LatLng (37.38264, -5.996295), 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      disableDefaultUI: true // Disabling buttons and stuff 
     }; 
     // We create a new one 
     Mapper.map = new google.maps.Map(document.getElementById('canvasMapa'),mapOptions); 
     if (Mapper.localStorage && !Mapper.favsLoaded) 
      Mapper.loadFavorites(); 
     if (Mapper.markers.length) 
      Mapper.recolocateMarkers(); 
    } 
    else { 
     console.log(Mapper.map); 
     Mapper.map.fitBounds(Mapper.mapBounds); 
    } 


    $('#mapa').die('pageshow'); 
} 

就是這樣。有用。首先檢查地圖是否已經初始化,如果它已經丟失了內部div,這會不時發生,但它會重新加載地圖。當地圖加載時,它會檢查應用程序中是否有任何標記,以便可以在新地圖中重新分配。

這可以在同一頁面中加載對話框。儘可能多的你想要的。

然後它是應用程序的導航。每當你去到另一個頁面,奇怪的事情開始發生。這是我在控制檯上看到的更改頁面並返回到地圖時發生的錯誤。

但是,地圖還是工作:

Uncaught TypeError: Cannot call method 'getSouthWest' of undefined 
c 
I.fitBounds 
I.fitBounds%7Bmain,geometry%7D.js:38 
S%7Bmain,geometry%7D.js:24 
I.fitBounds%7Bmain,geometry%7D.js:38 
BuSeViCi.initMapapp.js:78 
f.event.dispatchjquery-1.7.1.min.js:3 
f.event.add.h.handle.ijquery-1.7.1.min.js:3 
f.event.triggerjquery-1.7.1.min.js:3 
f.fn.extend.triggerjquery-1.7.1.min.js:3 
e.extend.eachjquery-1.7.1.min.js:2 
e.fn.e.eachjquery-1.7.1.min.js:2 
f.fn.extend.triggerjquery-1.7.1.min.js:3 
a.Widget._triggerjquery.mobile.min.js:17 
(anonymous function)jquery.mobile.min.js:43 
f.Callbacks.njquery-1.7.1.min.js:2 
f.Callbacks.o.fireWithjquery-1.7.1.min.js:2 
f.Callbacks.o.firejquery-1.7.1.min.js:2 
wjquery.mobile.min.js:41 
f.fn.extend.on.ejquery-1.7.1.min.js:3 
f.event.dispatchjquery-1.7.1.min.js:3 
f.event.add.h.handle.ijquery-1.7.1.min.js:3 

指向app.js線是一個說:Mapper.map.fitBounds(Mapper.mapBounds);

我所做的唯一的解決方法是清除Mapper.map變量時我導航到另一個頁面。這聽起來很骯髒,因爲我說,我想檢查未定義的對象,以恢復地圖,因爲它正在工作,記錄對象顯示我一個谷歌地圖對象。

嚴格想避免使用rel="external",因爲這打破了應用程序。您不能將它安裝在主頁中,也不能使PhoneGaps應用程序具有這些屬性,所以...您如何看待它?

回答

1

該錯誤表示Mapper.mapBounds爲空,但這裏沒有足夠的信息來確定原因。

+0

你在哪裏沒錯。我無法找到錯誤,因爲在我的測試中,我只是想在頁面之間快速移動。改爲:else if(BuSeViCi.mapBounds)BuSeViCi.map.fitBounds(BuSeViCi.mapBounds);訣竅!謝謝你的幫助 :-) – 2012-05-24 07:55:01

相關問題