7

次のコードは、奇妙な出力を表示します。全画面のモバイル マップが表示されます。しかし、なぜか画面の一部しか表示されません。マッピングに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>

出力:

ここに画像の説明を入力

前もって感謝します。

4

4 に答える 4

22

私のモバイル Web サイトの解決策はposition:absolute; width:100%; height:100%;、canvas div のスタイルを設定することでした。topおよびスタイルを使用してbottom、ツールバー用のスペースを残すことができます。

于 2012-05-02T00:48:26.967 に答える
1

jQuery を使用している場合、ヘッダーとフッターは避けられません。メニューとマップの両方がモバイル デバイスで完全に連携するように、{data-position="fixed" data-fullscreen="true"}ヘッダーとフッターの両方を設定し、同様に設定しました。html { height: 100% } body { height: 100%; margin: 0; } #map { position:absolute; width: 100%; height: 100%; padding: 0; }

于 2014-07-25T17:02:06.747 に答える
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
    });
}
于 2015-07-19T19:22:00.657 に答える