Osmdroid and Mapnik tile provider no longer working
Asked Answered
P

4

7

I have a developed, deployed and previously successful application which uses Osmdroid to load tiles from the default tile provider which is Mapnik

mMapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);

or

mMapView.setTileSource(TileSourceFactory.MAPNIK);

Until recently (maybe since today) the tiles on real devices (a phone and a tablet) do not load anymore. I am using osmdroid version 3.0.5. If I try the latest 4.0 version in a small sample project on an emulator, I see '403 forbidden responses' in the logcat when trying to download maptiles. If I switch the tile source to

mMapView.setTileSource(TileSourceFactory.MAPQUESTOSM);

then the map is visible with no problem. I don't see any reported issues on the Osmdroid web site issues list, nor does a Google search reveal any new problems reported, so I am asking if anyone else sees this new behaviour from Mapnik and might know of a fix?

Paddock answered 17/1, 2014 at 17:10 Comment(1)
TileSourceFactory.MAPQUESTOSM isn't supported anymoreThorny
P
5

Please follow Issue 515 to track this issue. We have implemented a fix and we will release a proper update soon.

Pillory answered 20/1, 2014 at 17:50 Comment(2)
Thank you very much. I had been tracking 515 and have temporarily made a patched jar. I look forward to the new release though, as I prefer to use an official binary.Paddock
Version 4.1 jar fixes the issue now. Thanks very muchPaddock
B
5

Having the same problem as well.

Unfortunately, it seems that osmdroid was banned from accessing http://tile.openstreetmap.org. Reading the tile usage policy, I found these two things which might explain why osmdroid got banned:

Heavy use (e.g. distributing an app that uses tiles from openstreetmap.org) is forbidden without prior permission from the System Administrators.

and

Valid User-Agent identifying application. Faking another app's User-Agent WILL get you blocked.

(osmdroid's useragent is "Apache-HttpClient/UNAVAILABLE (java 1.4)" which is pretty generic)

Barty answered 18/1, 2014 at 14:30 Comment(3)
It would be nice if osmdroid would allow to set the user agent (does it already?) as I think this would solve the problem. It already limits access threads to 2 explicitly to comply with OSMs usage policy.Plater
I looked at the osmdroid's source code, and I couldn't find any way to manually change the user-agent. So, I created a patch that will change the user-agent to something that's more compliant with OSM's tile usage policy. You can find more information here: code.google.com/p/osmdroid/issues/detail?id=515Barty
since 5.1 it's changableChastitychasuble
P
5

Please follow Issue 515 to track this issue. We have implemented a fix and we will release a proper update soon.

Pillory answered 20/1, 2014 at 17:50 Comment(2)
Thank you very much. I had been tracking 515 and have temporarily made a patched jar. I look forward to the new release though, as I prefer to use an official binary.Paddock
Version 4.1 jar fixes the issue now. Thanks very muchPaddock
C
1

From OpenPisteMap:

If you start getting "403 Forbidden" responses, stop. Don't just keep hammering away at the server - it probably means that you've been banned for abusive behaviour and continuing to hammer away at the server will just extend your ban.

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

Carrel answered 18/1, 2014 at 14:26 Comment(0)
B
1

You can use this code to set the user agent

HttpClientFactory.setFactoryInstance(new IHttpClientFactory() {
    public HttpClient createHttpClient() {
        final DefaultHttpClient client = new DefaultHttpClient();
        client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "useragent");
        return client;
    }
});
Byars answered 28/1, 2014 at 9:44 Comment(1)
Hi there from 2021. For whose who still need to use osmdroid 4.x, to make it work on modern androids use this answer, and include lib ver.4 from hc.apache.org/downloads.cgiEnallage

© 2022 - 2024 — McMap. All rights reserved.