package org.jgrasstools.nww.layers.defaults.raster; import java.awt.image.BufferedImage; import org.mapsforge.core.model.Tile; import org.mapsforge.map.awt.graphics.AwtGraphicFactory; import org.mapsforge.map.awt.graphics.AwtTileBitmap; import org.mapsforge.map.datastore.MapDataStore; import org.mapsforge.map.layer.renderer.DatabaseRenderer; import org.mapsforge.map.layer.renderer.RendererJob; import org.mapsforge.map.model.DisplayModel; import org.mapsforge.map.rendertheme.rule.RenderThemeFuture; public class OsmTilegenerator { private DatabaseRenderer renderer; private RenderThemeFuture theme; private DisplayModel model; private MapDataStore mapDatabase; private int tileSize; public OsmTilegenerator( MapDataStore mapDatabase, final DatabaseRenderer renderer, final RenderThemeFuture renderTheme, final DisplayModel displayModel, int tileSize ) { this.mapDatabase = mapDatabase; this.renderer = renderer; this.theme = renderTheme; this.model = displayModel; this.tileSize = tileSize; } public synchronized BufferedImage getImage( final int zoomLevel, final int xTile, final int yTile ) { try { Tile tile = new Tile(xTile, yTile, (byte) zoomLevel, tileSize); // displayModel.setFixedTileSize(tileSize); // Draw the tile float userScaleFactor = model.getUserScaleFactor(); RendererJob mapGeneratorJob = new RendererJob(tile, mapDatabase, theme, model, userScaleFactor, false, false); AwtTileBitmap bmp = (AwtTileBitmap) renderer.executeJob(mapGeneratorJob); if (bmp != null) { BufferedImage bitmap = AwtGraphicFactory.getBitmap(bmp); return bitmap; } } catch (Exception e) { // e.printStackTrace(); // will try again later System.err.println( "Not rendering tile: " + zoomLevel + "/" + xTile + "/" + yTile + " (" + e.getLocalizedMessage() + ")"); } return null; } }