api: UrlTileSource

- use replacement string for tilePath
- move 'low-level' formatTilePath to LwHttp
- implement LwHttpFactory
This commit is contained in:
Hannes Janetzek
2014-04-01 03:25:00 +02:00
parent d709d7f39a
commit 9c4e04c4d6
12 changed files with 178 additions and 188 deletions

View File

@@ -22,27 +22,29 @@ import java.util.Map;
import org.oscim.core.MapElement;
import org.oscim.core.Tag;
import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.source.LwHttp;
import org.oscim.tiling.source.UrlTileDataSource;
import org.oscim.tiling.source.UrlTileSource;
public abstract class GeoJsonTileSource extends UrlTileSource {
public GeoJsonTileSource(String url) {
super(url);
setExtension(".json");
super(url, "/{Z}/{X}/{Y}.json");
Map<String, String> opt = new HashMap<String, String>();
opt.put("Accept-Encoding", "gzip");
setHttpRequestHeaders(opt);
}
public GeoJsonTileSource(String url, int zoomMin, int zoomMax) {
super(url, zoomMin, zoomMax);
setExtension(".json");
super(url, "/{Z}/{X}/{Y}.json", zoomMin, zoomMax);
Map<String, String> opt = new HashMap<String, String>();
opt.put("Accept-Encoding", "gzip");
setHttpRequestHeaders(opt);
}
@Override
public ITileDataSource getDataSource() {
Map<String, String> opt = new HashMap<String, String>();
opt.put("Accept-Encoding", "gzip");
return new UrlTileDataSource(this, new GeoJsonTileDecoder(this), new LwHttp(getUrl(), opt));
return new UrlTileDataSource(this, new GeoJsonTileDecoder(this), getHttpEngine());
}
public Tag getFeatureTag() {

View File

@@ -18,22 +18,21 @@ package org.oscim.tiling.source.mapnik;
import org.oscim.core.Tile;
import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.source.LwHttp;
import org.oscim.tiling.source.UrlTileDataSource;
import org.oscim.tiling.source.UrlTileSource;
public class MapnikVectorTileSource extends UrlTileSource {
public MapnikVectorTileSource() {
super("http://d1s11ojcu7opje.cloudfront.net/dev/764e0b8d");
super("http://d1s11ojcu7opje.cloudfront.net/dev/764e0b8d", "");
}
@Override
public ITileDataSource getDataSource() {
return new UrlTileDataSource(this, new TileDecoder(), new LwHttp(getUrl()));
return new UrlTileDataSource(this, new TileDecoder(), getHttpEngine());
}
public int formatTilePath(Tile tile, byte[] path, int pos) {
public String formatTilePath(Tile tile) {
// url formatter for mapbox streets
byte[] hexTable = {
'0', '1', '2', '3',
@@ -41,17 +40,17 @@ public class MapnikVectorTileSource extends UrlTileSource {
'8', '9', 'a', 'b',
'c', 'd', 'e', 'f'
};
StringBuilder sb = new StringBuilder();
sb.append('/');
sb.append(hexTable[(tile.tileX) % 16]);
sb.append(hexTable[(tile.tileY) % 16]);
sb.append('/');
sb.append(tile.zoomLevel);
sb.append('/');
sb.append(tile.tileX);
sb.append('/');
sb.append(tile.tileY);
path[pos++] = '/';
path[pos++] = hexTable[(tile.tileX) % 16];
path[pos++] = hexTable[(tile.tileY) % 16];
path[pos++] = '/';
pos = LwHttp.writeInt(tile.zoomLevel, pos, path);
path[pos++] = '/';
pos = LwHttp.writeInt(tile.tileX, pos, path);
path[pos++] = '/';
pos = LwHttp.writeInt(tile.tileY, pos, path);
return pos;
return sb.toString();
}
}

View File

@@ -17,7 +17,6 @@
package org.oscim.tiling.source.oscimap;
import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.source.LwHttp;
import org.oscim.tiling.source.UrlTileDataSource;
import org.oscim.tiling.source.UrlTileSource;
@@ -28,13 +27,11 @@ import org.oscim.tiling.source.UrlTileSource;
public class OSciMap1TileSource extends UrlTileSource {
public OSciMap1TileSource(String url) {
super(url);
setExtension(".osmtile");
setMimeType("application/osmtile");
super(url, "/{Z}/{X}/{Y}.osmtile");
}
@Override
public ITileDataSource getDataSource() {
return new UrlTileDataSource(this, new TileDecoder(), new LwHttp(getUrl()));
return new UrlTileDataSource(this, new TileDecoder(), getHttpEngine());
}
}

View File

@@ -27,7 +27,6 @@ import org.oscim.core.TagSet;
import org.oscim.core.Tile;
import org.oscim.tiling.ITileDataSink;
import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.source.LwHttp;
import org.oscim.tiling.source.PbfDecoder;
import org.oscim.tiling.source.UrlTileDataSource;
import org.oscim.tiling.source.UrlTileSource;
@@ -37,14 +36,12 @@ import org.slf4j.LoggerFactory;
public class OSciMap2TileSource extends UrlTileSource {
public OSciMap2TileSource(String url) {
super(url);
setExtension(".osmtile");
setMimeType("application/osmtile");
super(url, "/{Z}/{X}/{Y}.osmtile");
}
@Override
public ITileDataSource getDataSource() {
return new UrlTileDataSource(this, new TileDecoder(), new LwHttp(getUrl()));
return new UrlTileDataSource(this, new TileDecoder(), getHttpEngine());
}
static class TileDecoder extends PbfDecoder {