我有一个开发,部署和以前成功的应用程序,它使用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的看到这个新的行为,可能知道的修复?
也有同样的问题.
不幸的是,似乎osmdroid被禁止访问http://tile.openstreetmap.org.阅读磁贴使用政策,我发现这两件事可以解释为什么osmdroid被禁止:
未经系统管理员事先许可,禁止大量使用(例如,分发使用openstreetmap.org中的磁贴的应用程序).
和
有效的用户代理识别应用程序.伪造另一个应用程序的用户代理将阻止你.
(osmdroid的useragent是"Apache-HttpClient/UNAVAILABLE(java 1.4)",这是非常通用的)