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.tiling.source.UrlTileSource;
import org.oscim.tiling.source.mvt.MapboxTileSource;
import org.oscim.tiling.source.mvt.TileDecoder;
public class MapboxMapActivity extends MapActivity {
@ -30,9 +29,9 @@ public class MapboxMapActivity extends MapActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TileDecoder.LOCALE = "en";
UrlTileSource tileSource = MapboxTileSource.builder()
.apiKey("mapzen-xxxxxxx") // Put a proper API key
//.locale("en")
.build();
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.tiling.source.UrlTileSource;
import org.oscim.tiling.source.mvt.MapboxTileSource;
import org.oscim.tiling.source.mvt.TileDecoder;
public class MapboxTest extends GdxMapApp {
@Override
public void createLayers() {
TileDecoder.LOCALE = "en";
UrlTileSource tileSource = MapboxTileSource.builder()
.apiKey("mapzen-xxxxxxx") // Put a proper API key
//.locale("en")
.build();
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";
public static class Builder<T extends Builder<T>> extends UrlTileSource.Builder<T> {
private String locale = "";
public Builder() {
super(DEFAULT_URL, DEFAULT_PATH, 1, 17);
}
public T locale(String locale) {
this.locale = locale;
return self();
}
public MapboxTileSource build() {
return new MapboxTileSource(this);
}
@ -42,8 +48,11 @@ public class MapboxTileSource extends UrlTileSource {
return new Builder();
}
private final String locale;
protected MapboxTileSource(Builder<?> builder) {
super(builder);
this.locale = builder.locale;
}
public MapboxTileSource() {
@ -56,6 +65,6 @@ public class MapboxTileSource extends UrlTileSource {
@Override
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 {
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_LAYER_VERSION = 15;
@ -70,11 +65,20 @@ public class TileDecoder extends PbfDecoder {
private short[] mTmpTags = new short[1024];
private Tile mTile;
private final String mLocale;
private ITileDataSink mMapDataCallback;
private final static float REF_TILE_SIZE = 4096.0f;
private float mScale;
public TileDecoder() {
this("");
}
public TileDecoder(String locale) {
mLocale = locale;
}
@Override
public boolean decode(Tile tile, ITileDataSink mapDataCallback, InputStream is)
throws IOException {
@ -197,7 +201,7 @@ public class TileDecoder extends PbfDecoder {
continue;
}
if (LOCALE.equals(key.substring(5))) {
if (mLocale.equals(key.substring(5))) {
//log.debug("found local " + key);
matchedLocal = i;
} //else