为什么我的带有两个“移动”页面的html页面必须刷新或移动一些小边缘才能在其中显示我的地图? 请参阅我的小提琴或以下代码:

我有一个包含两个jQuery Mobile页面的移动页面文档(html)。 1.要求您知道您的位置的登录页面。 2. OpenLayers3地图页面,它将打开您的位置并在打开时将地图居中。

我的麻烦是:地图将建立并且将以该位置为中心,但是直到我调整大小后刷新“地图”边缘或浏览器窗口后才会渲染。 我怀疑这与页面事件有关,但不确定。

我有缺少的财产吗?

安迪

   <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>MobilePg</title>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"/>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>    
    <link rel="stylesheet" href="http://openlayers.org/en/v3.0.0/css/ol.css"/>
    <script type="text/javascript" src=" http://openlayers.org/en/v3.0.0/build/ol.js"></script>

    <style>
        #myFooterPosit {
            color: gray;
        }
    </style>

    <script>
        var x, y;
        $(document).ready(function () {
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(showPosition);
            }           
        });

        function showPosition(position) {
            var positThing = $('#myFooterPosit');

            positThing.text('lat: ' + position.coords.latitude + " : " + " long: " + position.coords.longitude);

            x = position.coords.latitude;
            y = position.coords.longitude;

        }


    </script>

</head>
<body>
    <script>
        $(document).on("pagebeforeshow", "#mapPage", function () {
            makeMap();
        })
    </script>
    <!-- Landing page Point of Entry-->
    <div data-role="page" id="homePage">
        <div data-role="header">
            <a href="#mapPage" class="ui-btn ui-corner-all ui-shadow ui-icon-location ui-btn-icon-left">Map</a>

            <h1>Mbl Map Input</h1>
            <a href="#" class="ui-btn ui-corner-all ui-shadow ui-icon-search ui-btn-icon-left">Search</a>

        </div>
        <div data-role="main" class="ui-content">
            <p>My Content..</p>
        </div>
        <div data-role="footer">
            <h1><span id="myFooterPosit"></span></h1>

        </div>
    </div>


    <!-- Map Page -->
    <script>
        function makeMap() {
            try {
                alert(x + " : " + y);
                var map = new ol.Map({
                    target: 'map',
                    layers: [
                    new ol.layer.Tile({
                        title: 'OSM',
                        type: 'base',
                        visible: true,
                        source: new ol.source.OSM()
                    })],
                    view: new ol.View({
                        center: ol.proj.transform([y, x], 'EPSG:4326', 'EPSG:3857'),
                        zoom: 14
                    })
                });
            } catch (e) {
                alert(e.message);
            }
        }
    </script>
    <div data-role="page" id="mapPage">
        <div data-role="header">
            <a href="#homePage" class="ui-btn ui-corner-all ui-shadow ui-icon-home ui-btn-icon-left">Home</a>

            <h1>Map</h1>
        </div>
        <div data-role="main" class="ui-content">
            <div id="map" class="map" style="height:200px;"></div>
        </div>


        <div data-role="footer">
            <h1><span id="myFooterPosit"></h1>

        </div>
    </div>
</body>
</html

>

===============>>#1 票数:0 已采纳

您可以使用pagecontainer小部件的show事件:

http://api.jquerymobile.com/pagecontainer/#event-show

更新了FIDDLE

var x, y;

$(document).on("pagecreate","#homePage", function(){ 
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    }
});
$(document).on( "pagecontainershow", function( event, ui ) {
    if (ui.toPage.prop("id") == "mapPage"){
        makeMap();
    }
});

function showPosition(position) {
    var positThing = $('#myFooterPosit');
    positThing.text('lat: ' + position.coords.latitude + " : " + " long: " + position.coords.longitude);
    x = position.coords.latitude;
    y = position.coords.longitude;   
}

function makeMap() {
    try {
        var map = new ol.Map({
            target: 'map',
            layers: [
            new ol.layer.Tile({
                title: 'OSM',
                type: 'base',
                visible: true,
                source: new ol.source.OSM()
            })],
            view: new ol.View({
                center: ol.proj.transform([y, x], 'EPSG:4326', 'EPSG:3857'),
                zoom: 14
            })
        });
    } catch (e) {
        alert(e.message);
    }
}

  ask by DrSockMonkee translate from so

未解决问题?本站智能推荐:

1回复

除非页面刷新,否则不会出现jQuery Mobile内容

除非手动刷新页面,否则不会在底部使用Javascript进行代码操作。 有什么办法可以防止这种情况? 如果没有,如何在页面加载后立即动态刷新? 谢谢你的帮助!
1回复

在jquery移动页面加载时刷新内容

我有一个列表视图,当在列表视图上单击每个项目时,(将其添加到本地存储中),将打开一个对话框(页面),显示单击的项目的更多信息(详细视图)。 我为对话框页面添加了标记,同时执行的操作是,当我单击一个项目时,它在对话框页面上显示了所单击项目的正确详细信息,但是当对话框页面关闭并单击另一个时,项目,
2回复

jQuery Mobile页面不刷新

我没有做家庭作业,但无法上班。 按钮样式不会刷新,请提供帮助。 这是我写的Javascript 我确实尝试过$( "div[data-role=page]" ).page( "destroy" ).page(); 但这是行不通的。请帮我,谢谢。 JSFIDDLE http:
3回复

在jQuery Mobile中刷新动态创建的页面

我有以下问题: 我正在使用Jquery mobile,用户可以搜索产品,并且这些页面的详细信息是动态创建的: 就像是 : 它工作正常,但是问题是当您转到产品详细信息并单击刷新时,该表单再次出现,并且由于Dom已刷新,所以我无法再访问产品详细信息(需要进行其他搜索等) ..)
1回复

jQuery Mobile如何在导航后刷新内部页面

嗨,我用html5和JS开发了一个移动应用程序。 我在下面的html中包含所有使用的页面 在我的应用程序中,我从第2页转到第3页,在完成某些功能后,我必须回到第2页,但是我尝试刷新它没有成功。 我使用以下代码以便从page3返回至page2 更改页面后如何刷新page
1回复

如何在加载完成JQuery Mobile时刷新页面?

我正在制作一个JQuery Mobile PhoneGap Build应用程序,我需要页面在打开后刷新或重新加载。 该页面将通过主页上的链接打开。 我这样做是因为由于某种原因,当从主页打开链接时,当附加到onclick或onmouseover按钮时,所有功能均不起作用。
1回复

jQuery Mobile:返回页面时未加载动态内容

我来自getmovies.php数据正常工作,并在我第一次加载页面时加载到#moviesPage 。 但是,如果我离开#moviesPage并返回到该内容,则不会重新加载该内容。 出现页眉和页脚,我可以看到未填充的<ul>也在那里,只是没有任何动态加载的<li>s 。
1回复

如何在Jquerymobile MVC中重定向页面后刷新页面

大家好,我创建了一个小型的jquerymoblie mvc3应用程序,因为单击列表视图中的链接时,我将使用列表视图控件将其呈现到下一页,在该页面中,我已使用文本框将一些数据上传到数据库中更新完成后,我已重定向到上一页,现在我再次重定向到同一页以上传其他数据,但文本框字段不清除,它显示旧数据,当我
1回复

更改页面后如何刷新ListView

嗨,我开发了一个移动应用程序,在一个文件中有5个html页面。 在第2页中,我有建筑物费用的清单视图。 在第3页中,我有一个功能可以支付从第2页中选择的费用。在上述功能的末尾,我包含以下代码 我希望当应用程序从第3页返回第2页时不显示已付费用。 我想要我是否很好地理解页
2回复

JQuery页面刷新

如何使用JQuery以设置的间隔刷新页面,这些页面可以像元刷新一样工作但不重新加载页面? ...或者在页面上重新加载html表单以刷新它显示的数据? 这些都可以工作,但我找不到任何实际工作的东西。 谢谢!