gpt4 book ai didi

google-maps - JQuery Mobile 和 Google map 无法正确呈现

转载 作者:行者123 更新时间:2023-12-02 00:35:10 24 4
gpt4 key购买 nike

我只是想在 jquery 移动页面中显示谷歌地图。如果我直接加载页面,它就可以工作。但是,如果我从另一个页面导航到该页面,它只会呈现一个 map 图 block 。乍一看,我的问题类似于 https://forum.jquery.com/topic/google-maps-inside-jquery-mobile

但是,我已经在“pageinit”事件中执行初始化,并且我的 map div 具有设定的宽度和高度。

我见过http://code.google.com/p/jquery-ui-map/但如果可能的话,我宁愿不使用(另一个)第三方插件。

这是我的页面的样子:

<!DOCTYPE HTML>
<html>
<head>
<title>PhoneGap</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="cordova-1.6.1.js"></script>
<link rel="stylesheet" href="jquery.mobile-1.1.0.min.css" />
<script src="jquery-1.7.1.min.js"></script>
<script src="global.js"></script>
<script src="jquery.mobile-1.1.0.min.js"></script>
</head>
<body>
<div id="mapPage" data-role="page">
<style type="text/css">
html
{
height: 100%;
}
body
{
height: 100%;
margin: 0;
padding: 0;
}
#map_canvas
{
height: 100%;
}
</style>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=***API_KEY_REMOVED***&sensor=true">
</script>
<script type="text/javascript">
function initialize() {
var height = $(window).height() - 50;
var width = $(window).width();

$("#map_canvas").height(height);
$("#map_canvas").width(width);
var myLatlng = new google.maps.LatLng(39.962799, -82.999802);
var myOptions = {
center: myLatlng,
zoom: 18,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
//alert($(map.getDiv()).width());
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: ""
});
google.maps.event.trigger(map, 'resize')
}

$("#mapPage").live('pageinit', function () {

initialize();
});

</script>
<div data-role="header" id="menuHeader">
<a href="MenuDialog.htm" class="menuLink" data-role="none" data-rel="dialog">
<img class="headerIcon" style="height: 40px; border-right: 1px solid #333333; padding-right: 5px;"
id="MenuIcon" src="images/menuIcon.png" /></a>
<p>
Loc
</p>
</div>
<div data-role="content">
<div id="map_canvas" style="margin-top: 50px;">
</div>
</div>
</body>
<html>

预先感谢您的帮助。

更新:

经过一些实验,我在调整大小事件中添加了以下延迟:

setTimeout(function() {

google.maps.event.trigger(map,'resize');
}, 500);

这似乎解决了这个问题。希望这对其他人有帮助。

最佳答案

我在一个网站上读到,如果你遇到这个问题,那是因为当你初始化谷歌地图时,dom 没有完全加载。您必须将其添加到您的代码中:

$( document ).bind( "pageshow", function( event, data ){
google.maps.event.trigger(map, 'resize');
});

这对我有用。在显示的每个页面上调整大小可能很残酷,但是......它确实有效。

关于google-maps - JQuery Mobile 和 Google map 无法正确呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10489264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com