Jquery移动谷歌地图,我必须刷新页面,以显示地图

Jquery Mobile google maps , i have to refresh the page to show map

本文关键字:刷新 显示 地图 移动 谷歌地图 Jquery      更新时间:2023-09-26

我正在制作一个显示地图位置的应用程序,我有一个链接到地图的页面,当我点击该链接时,它会更改到地图页面而不加载地图。

所以我必须点击浏览器返回按钮并刷新有链接的页面,之后我再次点击链接,此时地图被加载,所以如果你能帮助我加载地图不刷新我将不胜感激

<div data-role="page">
        <div data-role="header">
            <a href="menudep.jsp" data-icon="back" data-theme="c">Atras</a>
            <h1><%=corto%></h1>
            <h4><img src="../images/logo_mich.png" width="40" height="40" /></h4>
            <a href="mobilelaip.html" data-icon="home" data-theme="c">Inicio</a>
        </div>
        <div data-role="content">
            <p>
                <%=descrip%>
            </p>
            <a href="map3.html">Ubicación</a>
            <ul data-role="listview" data-inset="true">
                <li><a href="oficio.jsp?dep=<%=id_dep%>">Info. Oficio</a></li>
                <li><a href="contacto.jsp?dep=<%=id_dep%>" data-rel="dialog">Contacto</a></li>
                <li><a href="paginaweb.jsp?dep=<%=id_dep%>" data-inline="true" data-rel="dialog">Pagina Web</a></li>             
            </ul>
        </div>
    </div>  

     <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
     <script type="text/javascript">
        // When map page opens get location and display map
        $('.page-map').live("pagecreate", function() {
            if(navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(function(position){
                    initialize(position.coords.latitude,position.coords.longitude);
                });
            }
        });
        function initialize(lat,lng) {
            var latlng = new google.maps.LatLng(lat, lng);
            var myOptions = {
                zoom: 20,
                center: latlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
            new google.maps.Marker ( 
            { 
                map : map, 
                animation : google.maps.Animation.DROP,
                position : latlng  
            });
        }
    </script>

map3.html代码是这样的

<div data-role="page" class="page-map" style="width:100%; height:100%;">
<div data-role="header"><h1>Mapa</h1></div>
<div data-role="content" style="width:100%; height:100%; padding:0;"> 
    <div id="map_canvas" style="width:100%; height:100%;"></div>
</div>

谢谢你的回答

关于代码的一些事情,其中一些可能是一个问题。我不能百分之百确定,因为我只能看到你的部分代码。

从我可以看到你正在使用几个html页面来显示你的应用程序。jQuery Mobile使用ajax来加载额外的页面(除非它被关闭),所以没有必要加载额外页面的HEAD内容,甚至更多, jQuery Mobile 将只加载 DIV data-role="page" ,而其他一切将被丢弃。如果你的javascript被放置在 HEAD 或在 BODY 内容的末尾,基本上在页面 DIV 之外的任何地方都将被删除。按照thisthis解决方案解决此问题。

我可以看到的其他问题是活的方法,而仍然可用(从 jQuery 1.9 及以上),如果在错误的时刻初始化,它将无法正确触发。所以改成:

$(document).on('pagecreate', '.page-map', function() {
    if(navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position){
            initialize(position.coords.latitude,position.coords.longitude);
        });
    }
});

第三件事,这一行:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>

必须在jQuery和jQuery Mobile之前初始化,所以在主html文件中初始化它。

最后是我的博客文章关于jQuery Mobile实现Google地图。如果你需要更多的信息,请随时留下评论。

这里有一些我成功使用的示例代码。我使用插件:https://code.google.com/p/jquery-ui-map/

如果不需要刷新,可以使用"pageshow"事件。

<div data-role="page" id="pagWienerMundo" data-theme="a">
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
    <script src="js/jquery-ui-map.min.js" type="text/javascript"></script>
    <div role="main" class="ui-content">
       <div id="map_canvas">
       </div>
    </div><!-- /content --> 
</div><!-- /page map -->
JAVASCRIPT

$(document).on("pageshow","#pagMap", function () {
    if (!(typeof google === 'object' && typeof google.maps === 'object'))
        $("#map_canvas").empty().append('<h3 style="color:#db393b;text-align:center">Connect to internet</h3>');
    else
    {
        $("#pagWienerMundo [role='main']").css("padding","0em");
        $('#map_canvas').css("width", "100%");
        $('#map_canvas').css("height", "450px");
        $('#map_canvas').gmap().bind('init', function() { 
            $.each( mapObj, 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);
                });
            });
        });
    }
});
JSON

mapObj=
[
  {
    "content" : "Example text to show on marker",
    "latitude": -32.95845,
    "longitude": -60.66764,
  }
]

假设您在本地和范围内有json对象(例如声明为全局)