我正在使用带有 Google Map API 的 JQuery mobile。除非我刷新页面并且我不明白为什么,否则地图无法正确显示。
这是我的 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),
});
}
如果我从另一个页面导航到上面的页面,我会得到以下结果:
然后当我刷新时,我得到了预期的结果:
这显然不是画布的问题,因为它显示为(红色)。另外,如果我浏览地图,我可以看到标记显示在正确的位置。这些屏幕截图是使用谷歌浏览器制作的,我用 Firefox 尝试过,画布在这里完全是红色的,根本没有地图。
PS:这是我原始代码的简单版本,但行为是相同的。
编辑:
有关详细信息,请参阅 Gajotres 的答案,但基本上,在访问 map.html 页面的链接中,添加target="_blank"
解决了该问题。请注意,这target="_self"
似乎也有效,很奇怪,因为它应该是默认值。关于目标的详细信息在 这里。