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

时间:2014-01-17 17:10:25

标签: android osmdroid

我有一个开发,部署且以前成功的应用程序,它使用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看到这种新行为并且可能知道修复?

4 个答案:

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

来自OpenPisteMap:

  

如果您开始收到“403 Forbidden”回复,停止。不要只是   继续锤击服务器 - 这可能意味着你已经去过   被禁止滥用行为并继续抨击   服务器只会延长您的禁令。

http://wiki.osm.org/wiki/Blocked

答案 3 :(得分:0)

您可以使用此代码设置用户代理

        HttpClientFactory.setFactoryInstance(new IHttpClientFactory() {
        public HttpClient createHttpClient() {
            final DefaultHttpClient client = new DefaultHttpClient();
            client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "useragent");
            return client;
        }
    });