Search code examples
androidofflineosmdroid

How to create osmdroid XYTileSource for offline tiles in version 4.1?


I have offline osmdroid maps working using version 4.0. Upgrading to 4.1, they no longer work. I have narrowed the problem down to the XYTileSource, in which aBaseUrl changed from being a string in 4.0 to and array in 4.1. How do I get offline tiles to work in 4.1?

Old 4.0 code that worked. The tiles are in /sdcard/osmdroid/tiles.zip

XYTileSource ts = new XYTileSource ( "tiles", 
                                      ResourceProxy.string.offline_mode, 
                                      13, 
                                      17, 
                                      256,
                                      ".png",
                                      "http://127.0.0.1");

mapView = (MapView) findViewById(R.id.mapview);
mapView.setTileSource(ts); 
mapView.setMultiTouchControls(true);
mapView.setBuiltInZoomControls(false);
mapView.setUseDataConnection(false); 
mapView.getController().setZoom(15);
GeoPoint point = new GeoPoint(40.715,-73.945);
mapView.getController().setCenter(point);

I tried changing it to this, but it doesn't work.

String[] urls = {"http://127.0.0.1"};
XYTileSource ts = new XYTileSource ( "tiles", 
                                      ResourceProxy.string.offline_mode, 
                                      13, 
                                      17, 
                                      256,
                                      ".png",
                                      urls);

Solution

  • I tried to provide a full answer here: Download maps for osmdroid

    If you have an "old" tiles.zip, open it, and check:

    • the root directory name => put it as the "aName" of XYTileSource constructor (is it really "tiles"?)
    • the tiles images extension => put it as the aImageFileNameEnding (is it really ".png"?)

    The aResourceId and aBaseUrl params are not used for zip files.