osmdroid 显示一个空网格

Posted

技术标签:

【中文标题】osmdroid 显示一个空网格【英文标题】:osmdroid displays an empty grid 【发布时间】:2012-12-13 04:19:52 【问题描述】:

我想尝试通过 osmdroid 集成 OpenStreetMap,但我遇到了一个问题,我不知道缺少什么。场景如下:

症状:地图小部件显示但只有一个空网格。

这是在我的 Activity 类中:

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    MapView mapView = new MapView(this, 256);
    mapView.setTileSource(TileSourceFactory.MAPNIK);
    mapView.setClickable(true);
    mapView.setBuiltInZoomControls(true);
    setContentView(mapView);

(我尝试选择各种 TileSources 似乎没有区别)

我的清单还包括这些权限(作为<manifest> 的子级,在<uses-sdk> 之后):

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

...我的模拟器以其他方式连接到互联网,例如。网络浏览器工作。

osmdroid 和 slf4j 在构建路径中。该应用程序编译没有问题,也没有产生异常。

可能出了什么问题?

非常感谢!

已解决:这是因为我的模拟器没有外部存储来缓存地图图块。

【问题讨论】:

文本更正:我的清单也包括这些权限(作为 [manifest] 的子项,在 [uses-sdk] 之后)。 我使用的是osmdroid 3.0.7 也许你也可以帮助我@Peter,...***.com/questions/25460443/… 【参考方案1】:

我对 OSMdroid 也很陌生,但尝试这样做?

setContentView(R.layout.offline_map_activity);
mapView = (MapView) findViewById(R.id.openmapview);

您还需要在 res/layouts 中包含 offline_map_activity.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:orientation="vertical" >

    <org.osmdroid.views.MapView
        android:id="@+id/openmapview"
        android:layout_
        android:layout_/>
</LinearLayout>

希望这对你有用。至少这对我的代码有用:)

【讨论】:

嗨!感谢您的回答!但是,已经显示全屏空地图网格的事实证实我的问题与布局无关:setContentView(mapView) 工作正常。昨晚我意识到这是完全不同的东西:我的模拟器没有外部存储...... 啊我明白了,难怪哈哈。很高兴你发现了问题:) 无论如何,@lyk,你能帮帮我吗? ***.com/questions/25460443/…【参考方案2】:

我认为您的设备没有 SD。您已更改缓存路径

OpenStreetMapTileProviderConstants.setCachePath(this.getFilesDir().getAbsolutePath()); 

【讨论】:

以上是关于osmdroid 显示一个空网格的主要内容,如果未能解决你的问题,请参考以下文章

用 Osmdroid 捏合缩放

OsmDroid 显示当前 LocationIcon 不工作

osmdroid - 显示更大的图块

osmdroid 地图图块显示空白

OsmDroid 显示带有块的空白屏幕

OSMDroid:缩放以显示整个 PathOverlay