]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - src/tim/prune/gui/map/MffMapSource.java
Moved source into separate src directory due to popular request
[GpsPrune.git] / src / tim / prune / gui / map / MffMapSource.java
diff --git a/src/tim/prune/gui/map/MffMapSource.java b/src/tim/prune/gui/map/MffMapSource.java
new file mode 100644 (file)
index 0000000..42806fc
--- /dev/null
@@ -0,0 +1,89 @@
+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";
+       }
+}