我正在创建一个在地图上显示位置的应用程序,我有一个链接到地图的页面,当我点击该链接时,它更改为地图页面而不加载地图。
所以我必须单击浏览器后退按钮并刷新有链接的页面,之后我再次单击链接并且此时加载了地图,所以如果你可以帮我加载地图而不刷新我将不胜感激。
<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>
感谢您的回答
答案 0 :(得分:1)
关于您的代码的一些事情,其中一些可能是一个问题。我无法100%确定,因为我只能看到你代码的一部分。
从我可以看到你使用几个html页面来显示你的应用程序。 jQuery Mobile使用ajax加载其他页面(除非关闭此页面),因此加载其他页面的HEAD内容毫无意义,更多, jQuery Mobile
只会加载 {使用 DIV
{1}} ,而其他所有内容都将被丢弃。如果您将javascript置于 data-role="page"
内或 HEAD
内容的末尾,则基本上位于页面 BODY
之外的任何位置它将被删除。按照 this 或 this 解决方案解决此问题。
我能看到的其他问题是实时方法,虽然仍可使用(从 DIV
及以上版本中移除)如果在错误的时刻初始化,则无法正确触发。所以改成它:
jQuery 1.9
第三件事,这一行:
$(document).on('pagecreate', '.page-map', function() {
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
initialize(position.coords.latitude,position.coords.longitude);
});
}
});
必须在jQuery和jQuery Mobile之前初始化,以便在主html文件中初始化它。
最后,我的博客article关于jQuery Mobile实施Google地图。如果您需要更多信息,请随时发表评论。
答案 1 :(得分:0)
这里有一些我成功使用的示例代码。 我使用了插件:https://code.google.com/p/jquery-ui-map/
无需刷新,您可以使用“pageshow”事件。
<强> INDEX 强>
<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对象(例如声明为全局)