在jQuery Mobile中保留页面加载之间的Google地图

在jQuery Mobile中保留页面加载之间的Google地图,jquery,google-maps,jquery-mobile,google-maps-api-3,google-maps-mobile,Jquery,Google Maps,Jquery Mobile,Google Maps Api 3,Google Maps Mobile,我正在开发一个jQuery移动应用程序,它在谷歌地图上非常流行。尽管我反复尝试,但似乎我无法处理页面转换和映射持久性 我真的很乐意这样做,我的工作方式就像是一种肮脏的工作环境,我一点都不喜欢 我有一个在pageShow上为地图页面运行的函数: initMap : function (){ if (!Mapper.map || !$('#canvasMapa div').length){ // Or has been removed weirdessly var mapOp

我正在开发一个jQuery移动应用程序,它在谷歌地图上非常流行。尽管我反复尝试,但似乎我无法处理页面转换和映射持久性

我真的很乐意这样做,我的工作方式就像是一种肮脏的工作环境,我一点都不喜欢

我有一个在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');
}
就这样。它起作用了。第一个if检查映射是否已初始化,以及是否丢失了内部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
变量。正如我所说,这听起来真的很脏,我想检查未定义的对象以恢复地图,因为它正在工作,并且记录该对象向我显示一个Google Maps对象


严格地说,我想避免使用
rel=“external”
,因为这会破坏应用程序。您无法在主页中安装它,也无法使用这些属性制作PhoneGaps应用程序,因此。。。您对此有何看法?

该错误意味着
Mapper.mapBounds
为空,但此处没有足够的信息来确定原因。

您的位置正确。我找不到错误,因为在我的测试中,我只是试图在页面之间快速移动。更改为:else if(BuSeViCi.mapBounds)BuSeViCi.map.fitBounds(BuSeViCi.mapBounds);我成功了!谢谢你的帮助:-)