0

Google マップに本当に依存している jQuery Mobile アプリを開発しています。何度も試してみましたが、ページの遷移とマップの永続性に対処できないようです。

私は本当にそうすることに専念しており、私がそれを機能させている方法は、私がまったく好きではないある種の汚い回避策のようなものです.

マップページの 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私が行った唯一の回避策は、別のページに移動するたびに変数をクリアすることです。私が言ったようにそれは本当に汚いように聞こえます。未定義のオブジェクトをチェックしてマップを回復したいと思います.

これはアプリを壊すので、私絶対に使用を避けたいです。rel="external"ホームページにインストールすることも、これらの属性を持つPhoneGapsアプリを作成することもできないので...どう思いますか?

4

1 に答える 1

1

エラーはそれMapper.mapBoundsが null であることを意味しますが、その理由を判断するのに十分な情報がここにはありません。

于 2012-05-24T07:03:12.527 に答える