package com.nutiteq.maps;
import com.nutiteq.maps.projections.EPSG3785;
import com.nutiteq.ui.Copyright;
import com.nutiteq.ui.StringCopyright;
/**
* Default implementation using Open Street Map tiles server.
*/
public class OpenStreetMap extends EPSG3785 implements GeoMap, UnstreamedMap {
private static final String OSM_MAPNIK_URL = "http://tile.openstreetmap.org/";
public static final int MIN_ZOOM = 0;
public static final int MAX_ZOOM = 17;
public static final int TILE_SIZE = 256;
/**
* Instance if Open Street Map
*/
public static final OpenStreetMap MAPNIK = new OpenStreetMap(OSM_MAPNIK_URL, TILE_SIZE, MIN_ZOOM,
MAX_ZOOM);
private final String baseUrl;
public OpenStreetMap(final String baseUrl, final int tileSize, final int minZoom,
final int maxZoom) {
this(new StringCopyright("OpenStreetMap"), baseUrl, tileSize, minZoom, maxZoom);
}
public OpenStreetMap(final Copyright copyright, final String baseUrl, final int tileSize,
final int minZoom, final int maxZoom) {
super(copyright, tileSize, minZoom, maxZoom);
this.baseUrl = baseUrl;
}
public String buildPath(final int mapX, final int mapY, final int zoom) {
final StringBuffer result = new StringBuffer();
result.append(baseUrl);
result.append(zoom);
result.append('/');
result.append((mapX / getTileSize()) & ((1 << zoom) - 1));
result.append('/');
result.append(mapY / getTileSize());
result.append(".png");
return result.toString();
}
}