为什么我必须重新加载页面才能正确显示地图?

时间:2014-10-16 12:02:01

标签: javascript jquery jquery-mobile arcobjects arcgis-js-api

我已经问过这个问题here,不幸的是问题无法解决,所以我在这里问:)

我有一个JQM页面,其中我显示了一张地图。愚蠢的是,要正确显示地图,我必须重新加载页面。

这是地图在第一次加载页面时的显示方式: Site before reload

这是刷新页面后显示的方式: Site before reload

这是我的代码:

var map;
    require([
                "esri/map",
                "dojo/dom",
                "esri/layers/ArcGISTiledMapServiceLayer",
                "dojo/domReady!"
            ],
            function (Map, dom, Tiled) {
                map = new Map("map", {
                    logo: false,
                    minZoom: 1,
                    maxZoom: 11
                });
                var luftbild = new Tiled(URL);
                map.addLayer(luftbild);
    });

这就是我为地图设计样式的方式:

<style>
    html, body, #map {
        padding: 0;
        margin: 0;
        height: 100%;
    }
</style>

以及我如何展示它:

<div data-role="page" style="background-color:red" ...>
    <!--Header-->
        ....
    <!--/Header-->
    <!--Content-->
        <div id="map">
        </div>
    <!--/Content-->
</div>

修改

在输入以下代码之后:

$(document).on("pageshow","#page",function(){ // initialize map and show
});

地图现在看起来像这样: enter image description here

是否可以将宽度和高度设置为100%?

1 个答案:

答案 0 :(得分:3)

地图需要具有定义宽度和高度的画布。在Jquery中,移动处理页面的方式与普通的html页面不同。即,一次可见一页(即具有data-role = page的div),而其他页则不可见。因此,应该使用名为pageshow的jquery移动特定页面事件来初始化任何页面上的地图

$(document).on("pageshow","#page",function(){ // initialize map and show
});