OsmDroid + Mobile Atlas Creator tutorial

As you may know, Mobile Atlas Creator (from now on, MOBAC) was blocked due to producing high stress on OSM servers, since mid-2013.

So MOBAC can’t generate Mapnik tiles now, and most of the OsmDroid Apps use Mapnik.

What we’re gonna do in this tutorial is to use MapQuest tiles, the ones that MOBAC actually support, instead of Mapnik tiles.

In MOBAC:

Select “Atlas > New Atlas”

Select the “OSMDroid ZIP” option

Now on the atlas, select “Map Source: OpenStreetMaps mapquest”

mapsource

Mark the “Recreate/adjust map tiles (CPU intensive)” checkbox

tileformat

Choose “Tile format: PNG”. To make sure this is correctly done, select another one (like JPEG) and then switch back to PNG.

Drag the area you wish to select and mark the Zoom Levels you want to include in your atlas

dragdrop

Click on atlas name (mine is “Unnamed atlas”), then click on Add Selection. A new layer must be created.

addselection

Then on the upper menu, click Atlas > Create atlas

Now you’ll find a .zip file inside your MOBAC folder. Extract it into a temporary folder.

Rename the “MapQuest” folder inside the zip to “MapquestOSM”, and zip it again (pay attention to the caps). Don’t worry about the name of the zip. “MapquestOSM.zip” would be OK, but its not strictly necessary.

copy the new zip file to /sdcard/osmdroid/ (not inside /sdcard/osmdroid/tiles!, just osmdroid folder)

Android code to load the atlas:

public class MyMapActivityBasic extends Activity
  protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   MapView mapView = new MapView(this, 256); //constructor
   mapView.setClickable(true);
   mapView.setBuiltInZoomControls(true);
   setContentView(mapView); //displaying the MapView
   mapView.setTileSource(TileSourceFactory.MAPQUESTOSM);
   mapView.getController().setZoom(15); //set initial zoom-level, depends on your need
   mapView.getController().setCenter(new GeoPoint(mLat, mLon));
   mapView.setUseDataConnection(true); 
   mapView.setMultiTouchControls(true);
 }
}