2014-01-17 31 views
6

我有一个开发,部署和以前成功的应用程序,它使用Osmdroid从默认的瓷砖供应商是Mapnik的Osmdroid和Mapnik的瓷砖供应商不再工作

mMapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE); 

mMapView.setTileSource(TileSourceFactory.MAPNIK); 

装载砖直到最近(也许从今天起),真实设备(电话和平板电脑)上的瓦片才不再加载。我正在使用osmdroid版本3.0.5。如果我在模拟器上的小型示例项目中尝试最新的4.0版本,则在尝试下载maptiles时,会在logcat中看到'403禁止响应'。如果我将切片源切换到

mMapView.setTileSource(TileSourceFactory.MAPQUESTOSM); 

那么地图是可见的,没有问题。我没有看到任何有关 Osmdroid web site issues list的报告问题,Google搜索也没有透露任何已报告的新问题,所以我询问是否有人从Mapnik看到这种新行为并可能知道修复方法?

+0

TileSourceFactory.MAPQUESTOSM不再被支持 –

回答

4

请按照Issue 515跟踪此问题。我们已经实施了一项修复措施,我们将很快发布适当的更新。

+0

非常感谢。我一直跟踪515,并暂时做了一个补丁罐。我期待着新版本,因为我更喜欢使用官方二进制文件。 – NickT

+1

版本4.1 jar现在解决了这个问题。非常感谢 – NickT

1

OpenPisteMap:

如果你开始 “403禁止” 的响应,停止。不要只是 一直在服务器上喋喋不休 - 这可能意味着你已被禁止因为滥​​用行为而被禁止,并且继续在 服务器上发起攻击只会延长你的禁令。

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

4

有同样的问题也是如此。

不幸的是,似乎osmdroid被禁止访问http://tile.openstreetmap.org。读tile usage policy,我发现这或许可以解释为什么osmdroid得到取缔这两个东西:

大量使用(例如,分配,使用的瓷砖从openstreetmap.org应用程序),而从系统管理员事先许可禁止。

有效用户代理标识的应用程序。伪造另一个应用的用户代理会阻止你。

(osmdroid的用户代理是 “Apache的HttpClient的/不可用(Java 1.4中)”,这是非常通用的)

+0

这将是很好,如果osmdroid将允许设置用户代理(做它了吗?)因为我认为这将解决问题。它已经将访问线程显式限制为2,以符合OSM的使用策略。 –

+2

我看着osmdroid的源代码,我找不到任何手动更改用户代理的方法。所以,我创建了一个补丁,将用户代理更改为更符合OSM的磁贴使用策略。你可以在这里找到更多的信息:http://code.google.com/p/osmdroid/issues/detail?id=515 – user3210008

+0

自5.1以来它是可变的 – spy

0

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

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