package com.nutiteq.maps; import com.nutiteq.components.MapTile; import com.nutiteq.maps.projections.EPSG3785; import com.nutiteq.ui.Copyright; import com.nutiteq.ui.CustomNTCopyright; import com.nutiteq.ui.StringCopyright; import com.nutiteq.utils.Utils; /** * Streamed maps based on Nutiteq map tiles streaming server. */ public class NutiteqStreamedMap extends EPSG3785 implements GeoMap, StreamedMap { private final String baseUrl; private static final String NUTITEQ_MAPSERVER = "http://aws.nutiteq.com/mapstream.php?ts=128&"; public static final NutiteqStreamedMap OPENSTREETMAP = new NutiteqStreamedMap(NUTITEQ_MAPSERVER, new CustomNTCopyright(), 128, 0, 19); public NutiteqStreamedMap(final String baseUrl, final String copyright, final int tileSize, final int minZoom, final int maxZoom) { this(baseUrl, new StringCopyright(copyright), tileSize, minZoom, maxZoom); } public NutiteqStreamedMap(final String baseUrl, final Copyright copyright, final int tileSize, final int minZoom, final int maxZoom) { super(copyright, tileSize, minZoom, maxZoom); this.baseUrl = Utils.prepareForParameters(baseUrl); } public String buildStreamedPath(final MapTile[] tiles) { final StringBuffer urlBuf = new StringBuffer(baseUrl); final MapTile firstTile = tiles[0]; urlBuf.append("z="); urlBuf.append(firstTile.getZoom()); urlBuf.append("&ver=2"); urlBuf.append("&t="); urlBuf.append(firstTile.getX() / getTileSize()); urlBuf.append(','); urlBuf.append(firstTile.getY() / getTileSize()); for (int i = 1; i < tiles.length; i++) { final MapTile obj = tiles[i]; urlBuf.append(','); urlBuf.append(obj.getX() / getTileSize()); urlBuf.append(','); urlBuf.append(obj.getY() / getTileSize()); } return urlBuf.toString(); } }