以下代码显示奇怪的输出。我应该看一个全屏移动地图。但出于某种原因,它只显示在屏幕的一部分上。我正在使用 jquery.ui.map 进行映射。
<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/jquery.mobile-1.1.0.min.css" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script src="js/jquery-1.7.1.min.js"></script>
<script src="js/jquery.mobile-1.1.0.min.js"></script>
<script type="text/javascript" src="js/jquery.ui.map.min.js"></script>
</head>
<body>
<div data-role="page">
<div data-role="header">
<h1>My Title</h1>
</div><!-- /header -->
<div data-role="content" id="map_canvas" name="contentMain">
</div><!-- /content -->
</div><!-- /page -->
<script>
$('#map_canvas').gmap().bind('init', function() {
// This URL won't work on your localhost, so you need to change it
// see http://en.wikipedia.org/wiki/Same_origin_policy
$.getJSON( 'http://jquery-ui-map.googlecode.com/svn/trunk/demos/json/demo.json', function(data) {
$.each( data.markers, function(i, marker) {
$('#map_canvas').gmap('addMarker', {
'position': new google.maps.LatLng(marker.latitude, marker.longitude),
'bounds': true
}).click(function() {
$('#map_canvas').gmap('openInfoWindow', { 'content': marker.content }, this);
});
});
});
});
</script>
</body>
</html>
输出:
提前致谢。
答案 0 :(得分:22)
我的移动网站的解决方案是为canvas div设置样式position:absolute; width:100%; height:100%;
。您可以使用top
和bottom
样式为工具栏留出空间。
答案 1 :(得分:1)
页眉和页脚是不可避免的。我为页眉和页脚设置{data-position="fixed" data-fullscreen="true"}
,并设置html { height: 100% } body { height: 100%; margin: 0; } #map { position:absolute; width: 100%; height: 100%; padding: 0; }
,以便菜单和地图在移动设备上完美协作。
答案 2 :(得分:0)
容器和地图画布需要100%的宽度和高度。
来自jQuery移动网站的结构是:
<div data-role="page" id="map-page" data-url="map-page">
<div data-role="header" data-theme="c">
<h1>Maps</h1>
</div>
<div data-role="content" id="map-canvas">
<!-- map loads here... -->
</div>
</div>
CSS:
#map-page, #map-canvas { width: 100%; height: 100%; padding: 0; }
从这里开始:http://view.jquerymobile.com/master/demos/examples/maps/geolocation.php
答案 3 :(得分:0)
我一直在搞乱这一点,并设法找到了完美的解决方案。它适用于带或不带标题的页面。它将地图完美地定位在页眉和页面底部之间的空间中(如果没有标题,则在整个页面上),用于任何分辨率和任何标题高度。
如果页面有标题,则此解决方案需要CSS和JS;如果页面没有标题,则需要CSS。
<强> HTML 强>
<div data-role="page" id="mapPage">
<div data-role="header"`>
<!-- your header HTML... -->
</div>
<div data-role="content">
<div id="map-canvas"></div>
<p id="nogeolocation"></p>
</div>
</div>
<强> CSS 强>
#map-canvas {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
}
/* eliminates scrollbars in map infowindow (optional) */
#mappopup {
line-height: 1.35;
overflow: hidden;
white-space: nowrap;
}
<强> JS 强>
var mapPageHeader = $("#mapPage .ui-header").eq(0);
if(mapPageHeader.length > 0) {
var headerHeight = mapPageHeader.outerHeight();
$("#map-canvas").css({
'height': ($(window).height() - headerHeight + 1) + 'px',
'top': headerHeight - 1
});
}