Google Map API で JQuery モバイルを使用しています。ページを更新しないと地図が正しく表示されず、原因がわかりません。
ここに私のmap.htmlファイルがあります:
<div data-role="page" id="map-page">  
    <div data-role="content" id="canvas-map" style="background-color:red"></div>
    <script src="js/map.js"></script>
    <script type="text/javascript">
        var $canvasMap = $('#canvas-map');
        $('#canvas-map').on('pagebeforeshow', initMap());
    </script>
</div>
そして私のmap.jsファイル:
function initMap() {
    "use strict";
    google.maps.visualRefresh = true;
    var marker, map, 
        myLocation = {lat:50, lon:-80},
        mapOptions = {
            zoom: 5,
            center: new google.maps.LatLng(myLocation.lat, myLocation.lon),
            mapTypeId: google.maps.MapTypeId.PLAN,
            disableDefaultUI: true
        };
    $('#canvas-map').css("height", "200px").css("padding", "0px");
    map = new google.maps.Map(document.getElementById('canvas-map'), mapOptions);
    /** MyPosition **/
    marker = new google.maps.Marker({
        map: map,
        draggable: false,
        animation: google.maps.Animation.DROP,
        position: new google.maps.LatLng(myLocation.lat, myLocation.lon),
    });
}
別のページから上記のページに移動すると、次の結果が得られます。

そして、更新すると、期待される結果が得られます。

キャンバスは(赤で)表示されているので、明らかに問題ありません。さらに、マップをナビゲートすると、正しい位置にマーカーが表示されます。これらのスクリーンショットは Google Chrome を使用して作成されました。Firefox で試してみましたが、キャンバスは完全に赤く、マップはまったくありません。
PS: これは私の元のコードの単純なバージョンですが、動作は同じです。
編集:
詳細については Gajotres の回答を参照してください。ただし、基本的には、map.html ページにアクセスするためのリンク内に追加するとtarget="_blank"、問題は解決しました。target="_self"デフォルト値であると想定されているため、奇妙にも機能しているように見えることに注意してください。ターゲット の詳細はこちら.