Osmdroid和Mapnik磁贴提供商不再工作

Nic*_*ckT 6 android osmdroid

我有一个开发,部署和以前成功的应用程序,它使用Osmdroid从默认的tile提供程序Mapnik加载tile

mMapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);
Run Code Online (Sandbox Code Playgroud)

要么

mMapView.setTileSource(TileSourceFactory.MAPNIK);
Run Code Online (Sandbox Code Playgroud)

直到最近(可能从今天开始),真实设备(手机和平板电脑)上的瓷砖不再加载.我使用的是osmdroid 3.0.5版.如果我在模拟器上的一个小样本项目中尝试最新的4.0版本,我在尝试下载maptiles时会在logcat中看到'403 forbidden responses'.如果我切换瓷砖源

mMapView.setTileSource(TileSourceFactory.MAPQUESTOSM);
Run Code Online (Sandbox Code Playgroud)

然后地图就可以看到没有问题.我没有看到任何报告的问题上 Osmdroid网站问题清单,也没有谷歌搜索显示报告的任何新的问题,所以我问是否有人从Mapnik的看到这个新的行为,可能知道的修复?

use*_*008 5

也有同样的问题.

不幸的是,似乎osmdroid被禁止访问http://tile.openstreetmap.org.阅读磁贴使用政策,我发现这两件事可以解释为什么osmdroid被禁止:

未经系统管理员事先许可,禁止大量使用(例如,分发使用openstreetmap.org中的磁贴的应用程序).

有效的用户代理识别应用程序.伪造另一个应用程序的用户代理将阻止你.

(osmdroid的useragent是"Apache-HttpClient/UNAVAILABLE(java 1.4)",这是非常通用的)

  • 我查看了osmdroid的源代码,我找不到任何方法来手动更改用户代理.因此,我创建了一个补丁,它将用户代理更改为更符合OSM的磁贴使用策略的内容.您可以在此处找到更多信息:http://code.google.com/p/osmdroid/issues/detail?id = 511 (2认同)

kur*_*arc 5

请按照问题515跟踪此问题.我们已经实施了修复程序,我们很快就会发布适当的更新.