Osmdroid - 无法在线加载地图

时间:2014-05-26 10:45:03

标签: android osmdroid

我正在使用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);

任何人都可以帮助我吗? 感谢

2 个答案:

答案 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

     

这个补丁并不是很漂亮,但它确实起到了作用。

来源:https://code.google.com/p/osmdroid/issues/detail?id=515