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

相关问题