package com.nutiteq.maps; import com.nutiteq.maps.projections.EPSG3785; import com.nutiteq.ui.Copyright; import com.nutiteq.ui.StringCopyright; /** * Implementation for map that uses OpenStreetMap tiles from jar. File names are * put together as * <code>/{path to tiles in jar}/(zoom level)_(tile x)_(tile y).png</code> */ public class JaredOpenStreetMap extends EPSG3785 implements GeoMap, UnstreamedMap { private final String tilesLocationPath; /** * Create map with tiles located at jar root. * * @param tileSize * map tile size * @param minZoom * minimum zoom for the map * @param maxZoom * maximum zoom for the map */ public JaredOpenStreetMap(final int tileSize, final int minZoom, final int maxZoom) { this("/", tileSize, minZoom, maxZoom); } /** * Create map with tiles in defined path. For example: * <code>/resources/map_tiles/</code>. * * @param tilesLocationPath * path to directory for files * @param tileSize * map tile size * @param minZoom * minimum zoom for the map * @param maxZoom * maximum zoom for the map */ public JaredOpenStreetMap(final String tilesLocationPath, final int tileSize, final int minZoom, final int maxZoom) { this(new StringCopyright("OpenStreetMap"), tilesLocationPath, tileSize, minZoom, maxZoom); } public JaredOpenStreetMap(final Copyright copyright, final String tilesLocationPath, final int tileSize, final int minZoom, final int maxZoom) { super(copyright, tileSize, minZoom, maxZoom); this.tilesLocationPath = tilesLocationPath; } public String buildPath(final int mapX, final int mapY, final int zoom) { final StringBuffer result = new StringBuffer(tilesLocationPath); result.append(zoom); result.append('_'); result.append((mapX / getTileSize()) & ((1 << zoom) - 1)); result.append('_'); result.append(mapY / getTileSize()); result.append(".png"); return result.toString(); } }