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"
デフォルト値であると想定されているため、奇妙にも機能しているように見えることに注意してください。ターゲット の詳細はこちら.