2

我正在尝试在 Android 中使用 PhoneGap 和 LeafLet。

我阅读了有关 LeafLet 的教程,并选择从移动示例开始

我对这个灰色区域的问题..为什么会出现这个灰色区域?浏览器
上没有灰色区域。除了文件路径,我没有改变任何东西。

我怎样才能使地图全屏?

更新说明:我正在使用 10" 平板电脑横向模式,现在我在 3,2" 手机上尝试了这个示例,并且 3.2" 屏幕没有问题。10" 屏幕横向模式有问题

在此处输入图像描述

MainActivity.java

public class MainActivity extends DroidGap {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        appView= (CordovaWebView) findViewById(R.id.tutorialView);

        appView.loadUrl("file:///android_asset/www/main.html");

    }

}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <org.apache.cordova.CordovaWebView
            android:id="@+id/tutorialView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />

</RelativeLayout>

main.html

<!DOCTYPE html>
<html>
<head>
    <title>Leaflet mobile example</title>

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <link rel="stylesheet" href="leaflet.css" />
    <!--[if lte IE 8]><link rel="stylesheet" href="leaflet.ie.css" /><![endif]-->

    <script src="leaflet.js"></script>

    <style>
        body {
            padding: 0;
            margin: 0;
        }
        html, body, #map {
            height: 100%;
        }
    </style>
</head>
<body>
    <div id="map"></div>

    <script>
        var map = L.map('map');

        L.tileLayer('http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/997/256/{z}/{x}/{y}.png', {
            maxZoom: 18,
            attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://cloudmade.com">CloudMade</a>'
        }).addTo(map);

        function onLocationFound(e) {
            var radius = e.accuracy / 2;

            L.marker(e.latlng).addTo(map)
                .bindPopup("You are within " + radius + " meters from this point").openPopup();

            L.circle(e.latlng, radius).addTo(map);
        }

        function onLocationError(e) {
            alert(e.message);
        }

        map.on('locationfound', onLocationFound);
        map.on('locationerror', onLocationError);

        map.locate({setView: true, maxZoom: 16});
    </script>
</body>
</html>
4

2 回答 2

4

在没有明确尺寸的情况下,Leaflet 并不总是能正确推断出地图的尺寸​​。 作为 Leaflet 此类问题的一般解决方案,请尝试将其添加到您的 javascript 末尾:

setTimeout(map.invalidateSize.bind(map));

这将导致 Leaflet 重新计算地图的尺寸​​,并希望修复您看到的灰色图块。

有时,可能还需要进一步延迟重新计算,例如setTimeout(map.invalidateSize.bind(map),200); 这可能会在异常的浏览器加载条件下修复灰色瓷砖。

于 2013-10-31T04:10:39.953 回答
0

设置元素帮助了我position:absolute#map试试这种风格:

<style>
    body {
        padding: 0;
        margin: 0;
    }
    #map {
        height: 100%;
        width: 100%;
        position: absolute;
    }
</style>
于 2013-10-25T09:21:12.963 回答