Deprecate OpenMapTiles GeoJSON vector tiles, #385
This commit is contained in:
@@ -4,8 +4,7 @@
|
|||||||
|
|
||||||
- S3DB layer [#475](https://github.com/mapsforge/vtm/pull/475)
|
- S3DB layer [#475](https://github.com/mapsforge/vtm/pull/475)
|
||||||
- vtm-mvt module with MVT tile decoder [#481](https://github.com/mapsforge/vtm/pull/481)
|
- vtm-mvt module with MVT tile decoder [#481](https://github.com/mapsforge/vtm/pull/481)
|
||||||
- OpenMapTiles MVT vector tiles [#481](https://github.com/mapsforge/vtm/pull/481)
|
- OpenMapTiles MVT vector tiles [#482](https://github.com/mapsforge/vtm/issues/482)
|
||||||
- OpenMapTiles GeoJSON vector tiles [#385](https://github.com/mapsforge/vtm/issues/385)
|
|
||||||
- Render theme fallback internal resources [#477](https://github.com/mapsforge/vtm/issues/477)
|
- Render theme fallback internal resources [#477](https://github.com/mapsforge/vtm/issues/477)
|
||||||
- Many other minor improvements and bug fixes
|
- Many other minor improvements and bug fixes
|
||||||
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.10.0)
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.10.0)
|
||||||
|
|||||||
@@ -84,9 +84,6 @@
|
|||||||
<activity
|
<activity
|
||||||
android:name=".NewGesturesActivity"
|
android:name=".NewGesturesActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
|
||||||
android:name=".OpenMapTilesGeojsonActivity"
|
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".OpenMapTilesMvtActivity"
|
android:name=".OpenMapTilesMvtActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
|
|||||||
@@ -1,68 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2017 devemux86
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
|
||||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
||||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public License along with
|
|
||||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package org.oscim.android.test;
|
|
||||||
|
|
||||||
import android.os.Bundle;
|
|
||||||
|
|
||||||
import org.oscim.android.cache.TileCache;
|
|
||||||
import org.oscim.layers.TileGridLayer;
|
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
|
||||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
|
||||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
|
||||||
import org.oscim.theme.VtmThemes;
|
|
||||||
import org.oscim.tiling.source.OkHttpEngine;
|
|
||||||
import org.oscim.tiling.source.UrlTileSource;
|
|
||||||
import org.oscim.tiling.source.geojson.OpenMapTilesGeojsonTileSource;
|
|
||||||
|
|
||||||
public class OpenMapTilesGeojsonActivity extends MapActivity {
|
|
||||||
|
|
||||||
private static final boolean USE_CACHE = false;
|
|
||||||
|
|
||||||
private TileCache mCache;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
|
|
||||||
UrlTileSource tileSource = OpenMapTilesGeojsonTileSource.builder()
|
|
||||||
.apiKey("xxxxxxx") // Put a proper API key
|
|
||||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
|
||||||
//.locale("en")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
if (USE_CACHE) {
|
|
||||||
// Cache the tiles into a local SQLite database
|
|
||||||
mCache = new TileCache(this, null, "tile.db");
|
|
||||||
mCache.setCacheSize(512 * (1 << 10));
|
|
||||||
tileSource.setCache(mCache);
|
|
||||||
}
|
|
||||||
|
|
||||||
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
|
||||||
mMap.setTheme(VtmThemes.OPENMAPTILES);
|
|
||||||
|
|
||||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
|
||||||
mMap.layers().add(new LabelLayer(mMap, l));
|
|
||||||
|
|
||||||
mMap.layers().add(new TileGridLayer(mMap, getResources().getDisplayMetrics().density));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onDestroy() {
|
|
||||||
super.onDestroy();
|
|
||||||
|
|
||||||
if (mCache != null)
|
|
||||||
mCache.dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -84,7 +84,6 @@ public class Samples extends Activity {
|
|||||||
/*linearLayout.addView(createButton(MapzenMvtActivity.class));
|
/*linearLayout.addView(createButton(MapzenMvtActivity.class));
|
||||||
linearLayout.addView(createButton(MapzenGeojsonActivity.class));*/
|
linearLayout.addView(createButton(MapzenGeojsonActivity.class));*/
|
||||||
linearLayout.addView(createButton(OpenMapTilesMvtActivity.class));
|
linearLayout.addView(createButton(OpenMapTilesMvtActivity.class));
|
||||||
linearLayout.addView(createButton(OpenMapTilesGeojsonActivity.class));
|
|
||||||
linearLayout.addView(createButton(GdxActivity.class));
|
linearLayout.addView(createButton(GdxActivity.class));
|
||||||
|
|
||||||
linearLayout.addView(createLabel("Features"));
|
linearLayout.addView(createLabel("Features"));
|
||||||
|
|||||||
@@ -1,124 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2017 devemux86
|
|
||||||
* Copyright 2017 Gustl22
|
|
||||||
* Copyright 2018 boldtrn
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
|
||||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
||||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public License along with
|
|
||||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package org.oscim.tiling.source.geojson;
|
|
||||||
|
|
||||||
import org.oscim.core.MapElement;
|
|
||||||
import org.oscim.core.Tag;
|
|
||||||
import org.oscim.tiling.source.UrlTileSource;
|
|
||||||
import org.oscim.utils.math.MathUtils;
|
|
||||||
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class OpenMapTilesGeojsonTileSource extends GeojsonTileSource {
|
|
||||||
|
|
||||||
private final static String DEFAULT_URL = "https://free.tilehosting.com/data/v3";
|
|
||||||
private final static String DEFAULT_PATH = "/{Z}/{X}/{Y}.geojson";
|
|
||||||
|
|
||||||
public static class Builder<T extends Builder<T>> extends UrlTileSource.Builder<T> {
|
|
||||||
private String locale = "";
|
|
||||||
|
|
||||||
public Builder() {
|
|
||||||
super(DEFAULT_URL, DEFAULT_PATH, 1, 14);
|
|
||||||
}
|
|
||||||
|
|
||||||
public T locale(String locale) {
|
|
||||||
this.locale = locale;
|
|
||||||
return self();
|
|
||||||
}
|
|
||||||
|
|
||||||
public OpenMapTilesGeojsonTileSource build() {
|
|
||||||
return new OpenMapTilesGeojsonTileSource(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("rawtypes")
|
|
||||||
public static Builder<?> builder() {
|
|
||||||
return new Builder();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Map<String, Tag> mappings = new LinkedHashMap<>();
|
|
||||||
|
|
||||||
private static Tag addMapping(String key, String val) {
|
|
||||||
Tag tag = new Tag(key, val);
|
|
||||||
mappings.put(key + "=" + val, tag);
|
|
||||||
return tag;
|
|
||||||
}
|
|
||||||
|
|
||||||
private final String locale;
|
|
||||||
|
|
||||||
public OpenMapTilesGeojsonTileSource(Builder<?> builder) {
|
|
||||||
super(builder);
|
|
||||||
this.locale = builder.locale;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OpenMapTilesGeojsonTileSource() {
|
|
||||||
this(builder());
|
|
||||||
}
|
|
||||||
|
|
||||||
public OpenMapTilesGeojsonTileSource(String urlString) {
|
|
||||||
this(builder().url(urlString));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void decodeTags(MapElement mapElement, Map<String, Object> properties) {
|
|
||||||
boolean hasName = false;
|
|
||||||
String fallbackName = null;
|
|
||||||
|
|
||||||
for (Map.Entry<String, Object> entry : properties.entrySet()) {
|
|
||||||
String key = entry.getKey();
|
|
||||||
Object value = entry.getValue();
|
|
||||||
String val = (value instanceof String) ? (String) value : String.valueOf(value);
|
|
||||||
|
|
||||||
if (key.startsWith(Tag.KEY_NAME)) {
|
|
||||||
int len = key.length();
|
|
||||||
if (len == 4) {
|
|
||||||
fallbackName = val;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (len < 7)
|
|
||||||
continue;
|
|
||||||
if (locale.equals(key.substring(5))) {
|
|
||||||
hasName = true;
|
|
||||||
mapElement.tags.add(new Tag(Tag.KEY_NAME, val, false));
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
Tag tag = mappings.get(key + "=" + val);
|
|
||||||
if (tag == null)
|
|
||||||
tag = addMapping(key, val);
|
|
||||||
mapElement.tags.add(tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!hasName && fallbackName != null)
|
|
||||||
mapElement.tags.add(new Tag(Tag.KEY_NAME, fallbackName, false));
|
|
||||||
|
|
||||||
// Calculate height of building parts
|
|
||||||
if (!properties.containsKey(Tag.KEY_HEIGHT)) {
|
|
||||||
if (properties.containsKey(Tag.KEY_VOLUME) && properties.containsKey(Tag.KEY_AREA)) {
|
|
||||||
Object volume = properties.get(Tag.KEY_VOLUME);
|
|
||||||
String volumeStr = (volume instanceof String) ? (String) volume : String.valueOf(volume);
|
|
||||||
Object area = properties.get(Tag.KEY_AREA);
|
|
||||||
String areaStr = (area instanceof String) ? (String) area : String.valueOf(area);
|
|
||||||
float height = Float.parseFloat(volumeStr) / Float.parseFloat(areaStr);
|
|
||||||
String heightStr = String.valueOf(MathUtils.round2(height));
|
|
||||||
mapElement.tags.add(new Tag(Tag.KEY_HEIGHT, heightStr, false));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2017 devemux86
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
|
||||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
||||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public License along with
|
|
||||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package org.oscim.test;
|
|
||||||
|
|
||||||
import org.oscim.gdx.GdxMapApp;
|
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
|
||||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
|
||||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
|
||||||
import org.oscim.theme.VtmThemes;
|
|
||||||
import org.oscim.tiling.source.OkHttpEngine;
|
|
||||||
import org.oscim.tiling.source.UrlTileSource;
|
|
||||||
import org.oscim.tiling.source.geojson.OpenMapTilesGeojsonTileSource;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import okhttp3.Cache;
|
|
||||||
import okhttp3.OkHttpClient;
|
|
||||||
|
|
||||||
public class OpenMapTilesGeojsonTest extends GdxMapApp {
|
|
||||||
|
|
||||||
private static final boolean USE_CACHE = false;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void createLayers() {
|
|
||||||
OkHttpClient.Builder builder = new OkHttpClient.Builder();
|
|
||||||
if (USE_CACHE) {
|
|
||||||
// Cache the tiles into file system
|
|
||||||
File cacheDirectory = new File(System.getProperty("java.io.tmpdir"), UUID.randomUUID().toString());
|
|
||||||
int cacheSize = 10 * 1024 * 1024; // 10 MB
|
|
||||||
Cache cache = new Cache(cacheDirectory, cacheSize);
|
|
||||||
builder.cache(cache);
|
|
||||||
}
|
|
||||||
OkHttpEngine.OkHttpFactory factory = new OkHttpEngine.OkHttpFactory(builder);
|
|
||||||
|
|
||||||
UrlTileSource tileSource = OpenMapTilesGeojsonTileSource.builder()
|
|
||||||
.apiKey("xxxxxxx") // Put a proper API key
|
|
||||||
.httpFactory(factory)
|
|
||||||
//.locale("en")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
|
||||||
mMap.setTheme(VtmThemes.OPENMAPTILES);
|
|
||||||
|
|
||||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
|
||||||
mMap.layers().add(new LabelLayer(mMap, l));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
GdxMapApp.init();
|
|
||||||
GdxMapApp.run(new OpenMapTilesGeojsonTest());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user