我正在使用osmdroid库在我的Android应用程序中使用openstreetmaps,但是我无法使用wifi在线加载地图。 如果我手动下载地图(mbtiles文件)并将其放在设备的osmdroid filder中,它可以正常工作,它们由我的应用程序加载,但是如果我想要我的应用程序实时加载来自网络的地图它不起作用,地图也没有加载。
在Logcat中,我收到以下警告:
"Problem downloading Maptile: /4/8/8 HTTP/1.1 403 Forbiden"
我在Manifest中拥有以下权限:
<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" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
这是我使用osmdoid加载地图的代码:
myOpenMapView = (MapView)findViewById(R.id.openmapview);
myOpenMapView.setBuiltInZoomControls(true);
myMapController = myOpenMapView.getController();
myMapController.setZoom(4);
任何人都可以帮助我吗? 感谢
答案 0 :(得分:1)
LordRaydenMK提到的问题已在osmdroid 4.1中修复。
因此,如果这是你遇到的问题,你只需要将osmdroid lib更新到最新版本。
答案 1 :(得分:0)
最近禁止默认的Apache HttpClient用户代理访问tile.openstreetmap.org(服务器返回403)。结果是, Mapnik提供商不再为osmdroid提供任何磁贴。
OpenStreetMap的磁贴使用政策( http://wiki.openstreetmap.org/wiki/Tile_usage_policy)说a 必须发送“有效的用户代理识别应用程序”。目前 用户代理osmdroid在下载磁贴时发送 “Apache-HttpClient / UNAVAILABLE(java 1.4)”这是非常通用的。
我已经创建了一个补丁,它将发送更多的用户代理 符合OSM的磁贴使用策略。新的用户代理是 “osmdroid([package name])”其中[package name]是包名 使用osmdroid的应用程序。
可在此处找到该补丁:http://pastebin.com/kxBh1gQ5
这个补丁并不是很漂亮,但它确实起到了作用。