package tim.prune.gui.map; import tim.prune.I18nManager; /** * Class to provide a map source for maps-for-free sources * These are double-layer sources with jpg and gif tiles */ public class MffMapSource extends MapSource { /** Name for this source */ private String _name = null; /** Base urls */ private String[] _baseUrls = null; /** Site names */ private String[] _siteNames = null; /** Maximum zoom level */ private int _maxZoom = 0; /** * Constructor giving name, url and maximum zoom * @param inName source name * @param inUrl base url * @param inMaxZoom maximum zoom level */ public MffMapSource(String inName, String inUrl1, String inExt1, String inUrl2, String inExt2, int inMaxZoom) { _name = inName; if (_name == null || _name.trim().equals("")) {_name = I18nManager.getText("mapsource.unknown");} _baseUrls = new String[2]; _baseUrls[0] = fixBaseUrl(inUrl1); _baseUrls[1] = fixBaseUrl(inUrl2); _siteNames = new String[2]; _siteNames[0] = fixSiteName(_baseUrls[0]); _siteNames[1] = fixSiteName(_baseUrls[1]); _extensions = new String[2]; _extensions[0] = inExt1; _extensions[1] = inExt2; _maxZoom = inMaxZoom; } /** * @return name */ public String getName() { return _name; } /** Number of layers is always 2 for mff sources */ public int getNumLayers() { return 2; } /** Get base url for specified layer */ public String getBaseUrl(int inLayerNum) { return _baseUrls[inLayerNum]; } /** site name without protocol or www. */ public String getSiteName(int inLayerNum) { return _siteNames[inLayerNum]; } /** * Make the URL to get the specified tile */ public String makeURL(int inLayerNum, int inZoom, int inX, int inY) { return _baseUrls[inLayerNum] + "z" + inZoom + "/row" + inY + "/" + inZoom + "_" + inX + "-" + inY + "." + getFileExtension(inLayerNum); } /** * @return maximum zoom level */ public final int getMaxZoomLevel() { return _maxZoom; } /** * @return semicolon-separated list of all fields */ public String getConfigString() { // TODO: Maybe a gui will be necessary for this one day return "not required"; } }