[英]Click Button to load Google Maps on other page (jquery mobile/javascript)
因此,我正在尝试制作带有湖面页面的移动应用程序。 我希望能够单击按钮链接,然后转到显示地图的页面。 这些都是在Jquery mobile中完成的,我不需要外部页面。 (如“#map-page”)
我已经找到了我通常想要工作的代码。 但是就让它在单击事件中启动而言,我没有运气。 我已经看过多个例子了。 我希望在页面上加载地图,因此移动应用程序无需加载大量地图。
我在jsFiddle上做了一个例子。
因此,当您单击指向页面的链接时,我需要将其加载到另一个嵌套页面(全屏)上,而不是使用onload属性进行加载。 因此,直到他们单击链接后,js才会启动。
请帮助<3谢谢。
编码:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<script type="text/javascript" src="../jquery/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3&sensor=false&language=en"></script>
<script type="text/javascript" src="../cordova-2.3.0.js"></script>
<style>
html, body, #map_canvas {
margin: 0;
padding: 0;
height: 100%;
}
</style>
<script type="text/javascript">
function detectBrowser() {
var useragent = navigator.userAgent;
var mapdivMap = document.getElementById("map_canvas");
if (useragent.indexOf('iPhone') != -1 || useragent.indexOf('Android') != -1 ) {
mapdivMap.style.width = '100%';
mapdivMap.style.height = '100%';
initialize();
} else {
mapdivMap.style.width = '600px';
mapdivMap.style.height = '800px';
initialize();
}
};
function initialize() {
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(43.464258,-80.52041),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);
var marker = new google.maps.Marker({
position: map.getCenter(),
map: map,
title: 'Waterloo'
});
}
google.maps.event.addDomListener(window, 'load', detectBrowser);
</script>
</head>
<body onload="detectBrowser()">
<div id="map_canvas"></div>
</body>
</html>
我从您的问题中了解到,您想将地图加载到一个全新的页面中。 或者,如果您想在同一页面上加载地图,但又延迟了地图的加载,则只需单击按钮即可调用该函数,然后使用Javascript将地图加载到叠加层DIV中。
jQuery Mobile有一种预取(预先加载)页面的方法。 如果您想提前加载地图,也可以考虑一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.