除非刷新,否则谷歌地图无法正确显示 [英] google maps not displayed correctly unless refreshing
本文介绍了除非刷新,否则谷歌地图无法正确显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我将 JQuery 移动版与 Google Map API 结合使用.除非我刷新页面,否则地图无法正确显示,但我不明白为什么.
这是我的 map.html 文件:
<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());
和我的 map.js 文件:
function initMap() {严格使用";google.maps.visualRefresh = true;var 标记,地图,myLocation = {lat:50, lon:-80},地图选项 = {变焦:5,中心:新的 google.maps.LatLng(myLocation.lat, myLocation.lon),mapTypeId: google.maps.MapTypeId.PLAN,disableDefaultUI: 真};$('#canvas-map').css("height", "200px").css("padding", "0px");map = new google.maps.Map(document.getElementById('canvas-map'), mapOptions);/** 我的位置 **/标记 = 新的 google.maps.Marker({地图:地图,可拖动:假,动画:google.maps.Animation.DROP,位置:新 google.maps.LatLng(myLocation.lat, myLocation.lon),});}
如果我从另一个页面导航到上面的页面,我会得到以下结果:
然后当我刷新时,我得到了预期的结果:
显然不是画布的问题,因为它是显示的(红色).另外,如果我通过地图导航,我可以看到显示在正确位置的标记.这些屏幕截图是使用谷歌浏览器制作的,我用 Firefox 尝试过,这里的画布完全是红色的,根本没有地图.
PS:这是我原始代码的一个简单版本,但行为是相同的.
有关详细信息,请参阅 Gajotres 的回答,但基本上,在访问 map.html 页面的链接中,添加 target="_blank"
解决了该问题.请注意, target="_self"
似乎也可以工作,很奇怪,因为它应该是默认值.目标的详细信息此处.
解决方案
google maps v3
框架可以通过 jQuery Mobile 轻松实现.
让我们谈谈这里的问题.您的内容 div 存在高度和宽度问题,主要是因为只有在 pageshow 事件期间才能正确计算页面尺寸.但即便如此,内容 div 也不会覆盖整页.
你的问题可以用一点 CSS 来解决:
#content {填充:0!重要;位置:绝对!重要;顶部:40px!重要;正确:0 !重要;左:0!重要;高度:200px!重要;}
基本上,您是在强迫您的内容覆盖可用空间.
工作示例:http://jsfiddle.net/RFNPt/2/
最终解决方案:
index.html
<头><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><script src="http://maps.google.com/maps/api/js?sensor=true"></script><link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css"/><script src="http://code.jquery.com/jquery-1.9.1.min.js"></script><script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script><title>MyTitle</title>头部><身体><div data-role="page" class="page"><div data-role="content" id="index-content"><div id="菜单"><a href="map.html" data-role="button" target="_blank">Map</a>