我有一个开发,部署且以前成功的应用程序,它使用Osmdroid从默认磁贴提供程序(Mapnik
)加载磁贴mMapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);
或
mMapView.setTileSource(TileSourceFactory.MAPNIK);
直到最近(也许从今天开始),真实设备(手机和平板电脑)上的磁贴不再加载。我使用的是osmdroid 3.0.5版。如果我在模拟器上的一个小样本项目中尝试最新的4.0版本,我在尝试下载maptiles时会在logcat中看到'403 forbidden responses'。如果我将磁贴源切换到
mMapView.setTileSource(TileSourceFactory.MAPQUESTOSM);
然后地图可见而没有问题。我没有看到任何报道的问题 Osmdroid web site issues list,Google搜索也没有显示任何报告的新问题,所以我问其他人是否从Mapnik看到这种新行为并且可能知道修复?
答案 0 :(得分:5)
也有同样的问题。
不幸的是,似乎osmdroid被禁止访问http://tile.openstreetmap.org。阅读tile usage policy,我发现这两件事可以解释为什么osmdroid被禁止了:
未经系统管理员事先许可,禁止大量使用(例如,分发使用openstreetmap.org中的图块的应用)。
和
有效的用户代理识别应用程序。伪造另一个应用程序的用户代理将阻止你。
(osmdroid的useragent是“Apache-HttpClient / UNAVAILABLE(java 1.4)”,这是非常通用的)
答案 1 :(得分:5)
请按照Issue 515跟踪此问题。我们已经实施了修复程序,我们很快就会发布适当的更新。
答案 2 :(得分:1)
如果您开始收到“403 Forbidden”回复,停止。不要只是 继续锤击服务器 - 这可能意味着你已经去过 被禁止滥用行为并继续抨击 服务器只会延长您的禁令。
答案 3 :(得分:0)
您可以使用此代码设置用户代理
HttpClientFactory.setFactoryInstance(new IHttpClientFactory() {
public HttpClient createHttpClient() {
final DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "useragent");
return client;
}
});