From 0c39ff8be0c7ed657f35d6695c577c03532a20bd Mon Sep 17 00:00:00 2001
From: Izumi Kawashima <schedul.xor@gmail.com>
Date: Mon, 21 Nov 2016 11:52:31 +0900
Subject: [PATCH] Made {X},{Y},{Z} customizable in derived tile sources for
 tile URL (#244)

---
 .../oscim/tiling/source/UrlTileSource.java    | 22 ++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/vtm/src/org/oscim/tiling/source/UrlTileSource.java b/vtm/src/org/oscim/tiling/source/UrlTileSource.java
index 3ef41493..caf20786 100644
--- a/vtm/src/org/oscim/tiling/source/UrlTileSource.java
+++ b/vtm/src/org/oscim/tiling/source/UrlTileSource.java
@@ -68,7 +68,7 @@ public abstract class UrlTileSource extends TileSource {
 
     }
 
-    public final static TileUrlFormatter URL_FORMATTER = new DefaultTileUrlFormatter();
+    public static final TileUrlFormatter URL_FORMATTER = new DefaultTileUrlFormatter();
     private final URL mUrl;
     private final String[] mTilePath;
 
@@ -174,7 +174,19 @@ public abstract class UrlTileSource extends TileSource {
         return mHttpFactory.create(this);
     }
 
-    static class DefaultTileUrlFormatter implements TileUrlFormatter {
+    public int tileXToUrlX(int tileX) {
+        return tileX;
+    }
+
+    public int tileYToUrlY(int tileY) {
+        return tileY;
+    }
+
+    public int tileZToUrlZ(int tileZ) {
+        return tileZ;
+    }
+
+    private static class DefaultTileUrlFormatter implements TileUrlFormatter {
         @Override
         public String formatTilePath(UrlTileSource tileSource, Tile tile) {
 
@@ -183,13 +195,13 @@ public abstract class UrlTileSource extends TileSource {
                 if (b.length() == 1) {
                     switch (b.charAt(0)) {
                         case 'X':
-                            sb.append(tile.tileX);
+                            sb.append(tileSource.tileXToUrlX(tile.tileX));
                             continue;
                         case 'Y':
-                            sb.append(tile.tileY);
+                            sb.append(tileSource.tileYToUrlY(tile.tileY));
                             continue;
                         case 'Z':
-                            sb.append(tile.zoomLevel);
+                            sb.append(tileSource.tileZToUrlZ(tile.zoomLevel));
                             continue;
                         default:
                             break;