我打算在我的Android应用程序中使用OSM,我决定尝试一下osmdroid。这是我到目前为止所做的。
1:我下载了slf4j-android-1.5.8.jar和osmdroid-android-3.0.8.jar并将它们复制到我的libs文件夹并将它们添加到构建路径中。
2:我的Xml布局文件代码如下所示。
<org.osmdroid.views.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
3:我已将所有权限添加到清单
<uses-permission android:name="android.permission.INTERNET"/>
<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.WRITE_EXTERNAL_STORAGE" />
4:我的on create方法看起来像这样
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.mapify);
mapView = (MapView) findViewById(R.id.mapview);
mapView.setTileSource(TileSourceFactory.MAPNIK);
mapView.setBuiltInZoomControls(true);
mapView.setClickable(true);
mapController = mapView.getController();
mapController.setZoom(15);
}
我的问题是,尽管代码运行良好,但当我在模拟器上运行时,我无法看到地图。我连接到互联网,并能够在使用谷歌地图视图时看到地图。 我浏览了互联网,还有一些关于同一问题的stackoverflow问题。他们中的大多数似乎忘记了添加权限或添加slf4j来构建路径。我做了两件事,所以我对自己做错了什么感到茫然。如果您提供了一些见解,将非常感激。
解决:
我不知道是什么原因,但是在我重新启动它几次之后会显示地图。之后一切似乎都很好。当我尝试新的虚拟设备时,会再次发生这种情况。当我关闭并重新启动应用程序几次时,它开始正常工作。
答案 0 :(得分:0)
这是一个老问题,但万一有人需要答案。如果模拟器没有外部存储来缓存地图图块,则可能会导致这种情况。我用SD卡创建了一个模拟器,解决了这个问题 open street maps (osmdroid) shows grey tiles not map in PC