Android Open Source - SmartNavi Maps Forge Tile Source






From Project

Back to project page SmartNavi.

License

The source code is released under:

Apache License

If you think the Android project SmartNavi listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.osmdroid.bonuspack.mapsforge;
/*from  w ww. jav  a2s . c  om*/
import java.io.File;
import org.mapsforge.map.reader.MapDatabase;
import org.mapsforge.android.maps.DebugSettings;
import org.mapsforge.android.maps.mapgenerator.JobParameters;
import org.mapsforge.android.maps.mapgenerator.MapGeneratorJob;
import org.mapsforge.android.maps.mapgenerator.databaserenderer.DatabaseRenderer;
import org.mapsforge.map.reader.header.FileOpenResult;
import org.osmdroid.ResourceProxy;
import org.osmdroid.ResourceProxy.string;
import org.osmdroid.tileprovider.MapTile;
import org.osmdroid.tileprovider.tilesource.BitmapTileSourceBase;
import org.mapsforge.map.rendertheme.InternalRenderTheme;
import org.mapsforge.map.rendertheme.XmlRenderTheme;
import org.mapsforge.core.model.Tile;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.Log;

/**
 * http://www.salidasoftware.com/how-to-render-mapsforge-tiles-in-osmdroid/
 * @author Salida Software
 * Adapted from code found here : http://www.sieswerda.net/2012/08/15/upping-the-developer-friendliness/
 */
public class MapsForgeTileSource extends BitmapTileSourceBase {

  protected File mapFile;

  // Reasonable defaults ..
  public static final int MIN_ZOOM = 8;
  public static final int MAX_ZOOM = 20;
  public static final int TILE_SIZE_PIXELS = 256;

  private DatabaseRenderer renderer;
  private MapDatabase mapDatabase;
  private XmlRenderTheme jobTheme;
  private JobParameters jobParameters;
  private DebugSettings debugSettings;

  // Required for the superclass
  public static final string resourceId = ResourceProxy.string.offline_mode;

  /**
   * The reason this constructor is protected is because all parameters,
   * except file should be determined from the archive file. Therefore a
   * factory method is necessary.
   * 
   * @param minZoom
   * @param maxZoom
   * @param tileSizePixels
   * @param file
   */
  protected MapsForgeTileSource(int minZoom, int maxZoom, int tileSizePixels, File file) {
    super("MapsForgeTiles", resourceId, minZoom, maxZoom, tileSizePixels, ".png");

    mapDatabase = new MapDatabase();

    //Make sure the database can open the file
    FileOpenResult fileOpenResult = this.mapDatabase.openFile(file);
    if (fileOpenResult.isSuccess()) {
      mapFile = file;
    }
    else{
      mapFile = null;
    }

    renderer = new DatabaseRenderer(mapDatabase);
    minZoom = renderer.getStartZoomLevel();
    maxZoom = renderer.getZoomLevelMax();
    tileSizePixels = mapDatabase.getMapFileInfo().tilePixelSize;
    Log.d("MAPSFORGE", "min="+minZoom+" max="+maxZoom+" tilesize="+tileSizePixels);

    //  For this to work I had to edit org.mapsforge.map.rendertheme.InternalRenderTheme.getRenderThemeAsStream()  to:
    //  return this.getClass().getResourceAsStream(this.absolutePath + this.file);
    jobTheme = InternalRenderTheme.OSMARENDER;        
    jobParameters = new JobParameters(jobTheme, 1);
    debugSettings = new DebugSettings(false, false, false);

  }

  /**
   * Creates a new MapsForgeTileSource from file.
   * 
   * Parameters minZoom and maxZoom are obtained from the
   * database. If they cannot be obtained from the DB, the default values as
   * defined by this class are used.
   * 
   * @param file
   * @return the tile source
   */
  public static MapsForgeTileSource createFromFile(File file) {
    //TODO - set these based on .map file info
    int minZoomLevel = MIN_ZOOM;
    int maxZoomLevel = MAX_ZOOM;
    int tileSizePixels = TILE_SIZE_PIXELS;

    return new MapsForgeTileSource(minZoomLevel, maxZoomLevel, tileSizePixels, file);
  }

  //The synchronized here is VERY important.  If missing, the mapDatabase read gets corrupted by multiple threads reading the file at once.
  public synchronized Drawable renderTile(MapTile pTile) {

    Tile tile = new Tile((long)pTile.getX(), (long)pTile.getY(), (byte)pTile.getZoomLevel());

    //Create a bitmap to draw on
    Bitmap bitmap = Bitmap.createBitmap(TILE_SIZE_PIXELS, TILE_SIZE_PIXELS, Bitmap.Config.RGB_565);

    //You could try something like this to load a custom theme
    //try{
    //  jobTheme = new ExternalRenderTheme(themeFile);
    //}
    //catch(Exception e){
    //  jobTheme = InternalRenderTheme.OSMARENDER;
    //}

    try{
      //Draw the tile
      MapGeneratorJob mapGeneratorJob = new MapGeneratorJob(tile, mapFile, jobParameters, debugSettings);
      renderer.executeJob(mapGeneratorJob, bitmap);
    }
    catch(Exception ex){
      //Make the bad tile easy to spot
      bitmap.eraseColor(Color.YELLOW);
    }

    Drawable d = new BitmapDrawable(bitmap);
    return d;
  }

}




Java Source Code List

com.ilm.sandwich.BuildConfig.java
com.ilm.sandwich.Config.java
com.ilm.sandwich.GoogleMapActivity.java
com.ilm.sandwich.Info.java
com.ilm.sandwich.MySupportMapFragment.java
com.ilm.sandwich.OsmMapActivity.java
com.ilm.sandwich.Settings.java
com.ilm.sandwich.Smartgeo.java
com.ilm.sandwich.StartChooser.java
com.ilm.sandwich.TouchableWrapper.java
com.ilm.sandwich.helferklassen.HttpRequests.java
com.ilm.sandwich.helferklassen.Locationer.java
com.ilm.sandwich.helferklassen.MapDownload.java
com.ilm.sandwich.helferklassen.MyItemizedOverlay.java
com.ilm.sandwich.helferklassen.PlacesAutoComplete.java
com.ilm.sandwich.helferklassen.PlacesTextSearch.java
com.ilm.sandwich.helferklassen.Rechnung.java
com.ilm.sandwich.helferklassen.SuggestionsAdapter.java
org.osmdroid.bonuspack.BuildConfig.java
org.osmdroid.bonuspack.BuildConfig.java
org.osmdroid.bonuspack.cachemanager.CacheManager.java
org.osmdroid.bonuspack.clustering.GridMarkerClusterer.java
org.osmdroid.bonuspack.clustering.MarkerClusterer.java
org.osmdroid.bonuspack.clustering.StaticCluster.java
org.osmdroid.bonuspack.kml.ColorStyle.java
org.osmdroid.bonuspack.kml.IconStyle.java
org.osmdroid.bonuspack.kml.KmlDocument.java
org.osmdroid.bonuspack.kml.KmlFeature.java
org.osmdroid.bonuspack.kml.KmlFolder.java
org.osmdroid.bonuspack.kml.KmlGeometry.java
org.osmdroid.bonuspack.kml.KmlGroundOverlay.java
org.osmdroid.bonuspack.kml.KmlLineString.java
org.osmdroid.bonuspack.kml.KmlMultiGeometry.java
org.osmdroid.bonuspack.kml.KmlPlacemark.java
org.osmdroid.bonuspack.kml.KmlPoint.java
org.osmdroid.bonuspack.kml.KmlPolygon.java
org.osmdroid.bonuspack.kml.LineStyle.java
org.osmdroid.bonuspack.kml.Style.java
org.osmdroid.bonuspack.location.FlickrPOIProvider.java
org.osmdroid.bonuspack.location.GeoNamesPOIProvider.java
org.osmdroid.bonuspack.location.GeocoderGisgraphy.java
org.osmdroid.bonuspack.location.GeocoderNominatimOld.java
org.osmdroid.bonuspack.location.GeocoderNominatim.java
org.osmdroid.bonuspack.location.NominatimPOIProvider.java
org.osmdroid.bonuspack.location.POI.java
org.osmdroid.bonuspack.location.PicasaPOIProvider.java
org.osmdroid.bonuspack.mapsforge.GenericMapView.java
org.osmdroid.bonuspack.mapsforge.MapsForgeTileModuleProvider.java
org.osmdroid.bonuspack.mapsforge.MapsForgeTileProvider.java
org.osmdroid.bonuspack.mapsforge.MapsForgeTileSource.java
org.osmdroid.bonuspack.overlays.DefaultInfoWindow.java
org.osmdroid.bonuspack.overlays.ExtendedOverlayItem.java
org.osmdroid.bonuspack.overlays.FolderOverlay.java
org.osmdroid.bonuspack.overlays.GroundOverlay.java
org.osmdroid.bonuspack.overlays.InfoWindow.java
org.osmdroid.bonuspack.overlays.ItemizedOverlayWithBubble.java
org.osmdroid.bonuspack.overlays.MapEventsOverlay.java
org.osmdroid.bonuspack.overlays.MapEventsReceiver.java
org.osmdroid.bonuspack.overlays.MarkerInfoWindow.java
org.osmdroid.bonuspack.overlays.Marker.java
org.osmdroid.bonuspack.overlays.Polygon.java
org.osmdroid.bonuspack.overlays.Polyline.java
org.osmdroid.bonuspack.routing.GoogleRoadManager.java
org.osmdroid.bonuspack.routing.MapQuestRoadManager.java
org.osmdroid.bonuspack.routing.OSRMRoadManager.java
org.osmdroid.bonuspack.routing.RoadLeg.java
org.osmdroid.bonuspack.routing.RoadManager.java
org.osmdroid.bonuspack.routing.RoadNode.java
org.osmdroid.bonuspack.routing.Road.java
org.osmdroid.bonuspack.utils.BonusPackHelper.java
org.osmdroid.bonuspack.utils.DouglasPeuckerReducer.java
org.osmdroid.bonuspack.utils.HttpConnection.java
org.osmdroid.bonuspack.utils.PolylineEncoder.java
org.osmdroid.bonuspack.utils.WebImageCache.java