Mapbox (Mapzen): locale improvements #57

This commit is contained in:
Emux 2016-12-29 18:16:27 +02:00
parent 15bc23cadf
commit 5c825ea9eb
4 changed files with 22 additions and 11 deletions

View File

@ -22,7 +22,6 @@ import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.theme.VtmThemes; import org.oscim.theme.VtmThemes;
import org.oscim.tiling.source.UrlTileSource; import org.oscim.tiling.source.UrlTileSource;
import org.oscim.tiling.source.mvt.MapboxTileSource; import org.oscim.tiling.source.mvt.MapboxTileSource;
import org.oscim.tiling.source.mvt.TileDecoder;
public class MapboxMapActivity extends MapActivity { public class MapboxMapActivity extends MapActivity {
@ -30,9 +29,9 @@ public class MapboxMapActivity extends MapActivity {
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
TileDecoder.LOCALE = "en";
UrlTileSource tileSource = MapboxTileSource.builder() UrlTileSource tileSource = MapboxTileSource.builder()
.apiKey("mapzen-xxxxxxx") // Put a proper API key .apiKey("mapzen-xxxxxxx") // Put a proper API key
//.locale("en")
.build(); .build();
VectorTileLayer l = mMap.setBaseMap(tileSource); VectorTileLayer l = mMap.setBaseMap(tileSource);

View File

@ -21,15 +21,14 @@ import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.theme.VtmThemes; import org.oscim.theme.VtmThemes;
import org.oscim.tiling.source.UrlTileSource; import org.oscim.tiling.source.UrlTileSource;
import org.oscim.tiling.source.mvt.MapboxTileSource; import org.oscim.tiling.source.mvt.MapboxTileSource;
import org.oscim.tiling.source.mvt.TileDecoder;
public class MapboxTest extends GdxMapApp { public class MapboxTest extends GdxMapApp {
@Override @Override
public void createLayers() { public void createLayers() {
TileDecoder.LOCALE = "en";
UrlTileSource tileSource = MapboxTileSource.builder() UrlTileSource tileSource = MapboxTileSource.builder()
.apiKey("mapzen-xxxxxxx") // Put a proper API key .apiKey("mapzen-xxxxxxx") // Put a proper API key
//.locale("en")
.build(); .build();
VectorTileLayer l = mMap.setBaseMap(tileSource); VectorTileLayer l = mMap.setBaseMap(tileSource);

View File

@ -27,11 +27,17 @@ public class MapboxTileSource extends UrlTileSource {
private final static String DEFAULT_PATH = "/{Z}/{X}/{Y}.mvt"; private final static String DEFAULT_PATH = "/{Z}/{X}/{Y}.mvt";
public static class Builder<T extends Builder<T>> extends UrlTileSource.Builder<T> { public static class Builder<T extends Builder<T>> extends UrlTileSource.Builder<T> {
private String locale = "";
public Builder() { public Builder() {
super(DEFAULT_URL, DEFAULT_PATH, 1, 17); super(DEFAULT_URL, DEFAULT_PATH, 1, 17);
} }
public T locale(String locale) {
this.locale = locale;
return self();
}
public MapboxTileSource build() { public MapboxTileSource build() {
return new MapboxTileSource(this); return new MapboxTileSource(this);
} }
@ -42,8 +48,11 @@ public class MapboxTileSource extends UrlTileSource {
return new Builder(); return new Builder();
} }
private final String locale;
protected MapboxTileSource(Builder<?> builder) { protected MapboxTileSource(Builder<?> builder) {
super(builder); super(builder);
this.locale = builder.locale;
} }
public MapboxTileSource() { public MapboxTileSource() {
@ -56,6 +65,6 @@ public class MapboxTileSource extends UrlTileSource {
@Override @Override
public ITileDataSource getDataSource() { public ITileDataSource getDataSource() {
return new UrlTileDataSource(this, new TileDecoder(), getHttpEngine()); return new UrlTileDataSource(this, new TileDecoder(locale), getHttpEngine());
} }
} }

View File

@ -35,11 +35,6 @@ import java.util.ArrayList;
public class TileDecoder extends PbfDecoder { public class TileDecoder extends PbfDecoder {
private static final Logger log = LoggerFactory.getLogger(TileDecoder.class); private static final Logger log = LoggerFactory.getLogger(TileDecoder.class);
/**
* Use default locale.
*/
public static String LOCALE = "";
private static final int TAG_TILE_LAYERS = 3; private static final int TAG_TILE_LAYERS = 3;
private static final int TAG_LAYER_VERSION = 15; private static final int TAG_LAYER_VERSION = 15;
@ -70,11 +65,20 @@ public class TileDecoder extends PbfDecoder {
private short[] mTmpTags = new short[1024]; private short[] mTmpTags = new short[1024];
private Tile mTile; private Tile mTile;
private final String mLocale;
private ITileDataSink mMapDataCallback; private ITileDataSink mMapDataCallback;
private final static float REF_TILE_SIZE = 4096.0f; private final static float REF_TILE_SIZE = 4096.0f;
private float mScale; private float mScale;
public TileDecoder() {
this("");
}
public TileDecoder(String locale) {
mLocale = locale;
}
@Override @Override
public boolean decode(Tile tile, ITileDataSink mapDataCallback, InputStream is) public boolean decode(Tile tile, ITileDataSink mapDataCallback, InputStream is)
throws IOException { throws IOException {
@ -197,7 +201,7 @@ public class TileDecoder extends PbfDecoder {
continue; continue;
} }
if (LOCALE.equals(key.substring(5))) { if (mLocale.equals(key.substring(5))) {
//log.debug("found local " + key); //log.debug("found local " + key);
matchedLocal = i; matchedLocal = i;
} //else } //else