1

我正在尝试在 JQuery Mobile 页面上显示 Google 地图,但每次加载页面时都很难让它正确显示。

我有两个主要页面工作:

  1. 索引.php
  2. 地图.php

从 index.php 加载站点然后在导航栏中切换到 map.php 时,地图会首次加载。切换回 index.php,然后再次切换回 map.php,地图的中心在左上角加载,并且在触摸屏幕之前不会显示完整的地图(但是,这在计算机的浏览器上不会发生)。但是,如果我首先加载 map.php,则地图会随着任何页面的来回更改而保持原位。

我的测试站点是http://beersandears.net/mbeta/

关于我所缺少的任何想法?我从互联网上的研究中得到了这一点,但我没有尝试过帮助解决这个问题,包括:

第三个似乎与我的问题非常相似,但使用“pageshow”的解决方案不起作用。

这是map.php的代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<title><?php wp_title('|', true, 'right'); ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css" />
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://maps.google.com/maps/api/js?key=AIzaSyBtVQWtkD4MjJ3zbe9DXgPqSlC2XDn5K7c&sensor=true" type="text/javascript"></script>
<script src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script>
<style type="text/css">
img {
    max-width:100%;
    height:auto;
}
</style>
</head>
<body>
<div id="wrapper" data-role="page" id="map_page">
    <div id="header" data-role="header" data-position="fixed" data-id="head">
        <h1>WDW Map</h1>
    </div><!-- end header -->
    <div id="map_canvas" data-role="content">
    </div><!-- end content -->

<div id="footer" data-id="navbar" data-role="footer" data-position="fixed"> 
    <div id="navbar" data-role="navbar">
        <ul>
            <li><a href="index.php">WDW Beer List</a></li>
            <li><a href="map.php">WDW Map</a></li>
            <li><a href="blog.php">Articles</a></li>
        </ul>
    </div><!-- end navbar -->
</div><!-- end footer -->
<script type="text/javascript">
        $(function(){
            initializeMap(28.385208623548024,-81.56713485717773);
        });

        function initializeMap(lat,lng) {
            var adjustedHeight = ($(window).height());
            $('#map_canvas').css({height:adjustedHeight});
            //$("#map_canvas").height = $(window).height() - $("#header").height() - $("#footer").height();
            setTimeout(function() {

                var latlng = new google.maps.LatLng(lat, lng);
                var myOptions = {
                        zoom: 12,
                    center: latlng,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };

                var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
                //var crosshairLayer = new google.maps.KmlLayer('http://freezoo.alwaysdata.net/justcrosshair2.kml',
                //{preserveViewport: true});

                //crosshairLayer.setMap(map);

                google.maps.event.trigger(map, 'resize');
                map.setZoom( map.getZoom() );
            }, 500);
        }
</script>
</div><!-- end wrapper -->
</body>
</html>
4

1 回答 1

1

解决了。我在data-role="page"div 中有两个 ID,当我试图引用第二个时,它正在读取第一个作为 ID。pageshow 事件修复现在可以在上面的第三个链接中看到。

于 2012-08-07T23:32:40.593 回答