【问题标题】:Click Button to load Google Maps on other page (jquery mobile/javascript)单击按钮以在其他页面上加载谷歌地图(jquery mobile/javascript)
【发布时间】:2013-01-26 03:48:11
【问题描述】:

所以我正在尝试制作一个带有湖页面的移动应用程序。我希望能够单击按钮链接并被带到一个有地图的页面。 这一切都是在 Jquery mobile 中完成的,我不想要外部页面。 (比如“#map-page”)

我已经完成了我想要通用的代码。但就让它在点击事件上启动而言,我没有运气。我经历过多个例子等等。 我希望当我在页面上时加载地图,这样移动应用就不需要加载大量地图。

我在jsFiddle上做了一个例子。

http://jsfiddle.net/Ajfvr/

因此,当您单击页面的链接时,我需要它在另一个嵌套页面(全屏)上加载,而不是使用 onload 属性加载。所以 js 在点击链接之前不会启动。

请帮助

代码:

<!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 jquery google-maps cordova


    【解决方案1】:

    我从您的问题中了解到,您希望将地图加载到一个全新的页面中。或者,如果您想在同一页面上加载地图,但延迟加载地图,您可以简单地通过单击按钮调用该函数并使用 Javascript 将地图加载到叠加 DIV 中。

    jQuery Mobile 有一种预取(提前加载)页面的方法。如果您尝试提前加载地图,您也可以研究一下。

    【讨论】:

    • 是的,所以我希望这个 javascript 仅在单击“查看地图”按钮时执行。然后另一个嵌套页面也被转换并加载地图。我想这样做,所以它不会加载所有这些地图,它只会在用户想要查看它们时加载。
    • 好吧,你可以像这样调用函数,而不是 onload:使用 你可以隐藏/显示像 @987654321 这样的覆盖@ 并调用 maps 函数以及显示叠加层。这将延迟加载地图,直到单击按钮。
    • 有了这些信息。当单击按钮时,我使用了覆盖 div 来弹出。单击后,我确保它会启动地图的代码。我尝试让它在 android 中运行良好,仅在模拟器中的 2.3.3 上测试过,但它运行良好。即使更改 z-index 不起作用,关闭按钮也不会显示。我尝试了一个cutsom,但没有奏效,所以我最终从google maps api v3中获取了自定义控件的代码并制作了一个关闭按钮。因为某些我需要的东西,我一直在无休止地挣扎。如果您也遇到困难,此示例也会对您有所帮助。
    • 这里是 jsFiddle 上的代码。 jsfiddle.net/bQcBt 变量和一些东西没有改变 atm 因为我只是想让它工作。所以有了这段代码。我可以在我的移动应用程序中使用谷歌地图,而无需在应用程序启动时加载(节省内存),并且也不再需要嵌套页面。如果您在 Cordova 上使用 Jquery 编写移动应用程序(或 phonegap,同样的事情),如果遇到问题,我可以帮助回答您的一些问题! Steam:99cptsnow 电子邮件:CptSnowReveille@hotmail.com
    • 如果您有多个地图并且想要多次使用关闭按钮,请参阅我的其他问题以获取有关多个切换控制按钮的解决方案:stackoverflow.com/questions/14886917/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 2012-03-15
    • 2016-11-19
    相关资源
    最近更新 更多