我想尝试通过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在构建路径中.该应用程序编译没有问题,并且不会产生任何异常.
可能有什么不对?
非常感谢!
已解决:这是由于我的模拟器没有外部存储来缓存地图图块.
解决方法
我对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_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <org.osmdroid.views.MapView android:id="@+id/openmapview" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout>
希望这对你有用.至少这适用于我的代码:)