diff --git a/docs/Changelog.md b/docs/Changelog.md index 0fbcf700..badf85bb 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -4,8 +4,7 @@ - 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) -- OpenMapTiles MVT vector tiles [#481](https://github.com/mapsforge/vtm/pull/481) -- OpenMapTiles GeoJSON vector tiles [#385](https://github.com/mapsforge/vtm/issues/385) +- OpenMapTiles MVT vector tiles [#482](https://github.com/mapsforge/vtm/issues/482) - Render theme fallback internal resources [#477](https://github.com/mapsforge/vtm/issues/477) - Many other minor improvements and bug fixes - [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.10.0) diff --git a/vtm-android-example/AndroidManifest.xml b/vtm-android-example/AndroidManifest.xml index cbaf9c54..f83ee1b0 100644 --- a/vtm-android-example/AndroidManifest.xml +++ b/vtm-android-example/AndroidManifest.xml @@ -84,9 +84,6 @@ - diff --git a/vtm-android-example/src/org/oscim/android/test/OpenMapTilesGeojsonActivity.java b/vtm-android-example/src/org/oscim/android/test/OpenMapTilesGeojsonActivity.java deleted file mode 100644 index c3fdeaf3..00000000 --- a/vtm-android-example/src/org/oscim/android/test/OpenMapTilesGeojsonActivity.java +++ /dev/null @@ -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 . - */ -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(); - } -} diff --git a/vtm-android-example/src/org/oscim/android/test/Samples.java b/vtm-android-example/src/org/oscim/android/test/Samples.java index ef7fdcd5..5200ee1a 100644 --- a/vtm-android-example/src/org/oscim/android/test/Samples.java +++ b/vtm-android-example/src/org/oscim/android/test/Samples.java @@ -84,7 +84,6 @@ public class Samples extends Activity { /*linearLayout.addView(createButton(MapzenMvtActivity.class)); linearLayout.addView(createButton(MapzenGeojsonActivity.class));*/ linearLayout.addView(createButton(OpenMapTilesMvtActivity.class)); - linearLayout.addView(createButton(OpenMapTilesGeojsonActivity.class)); linearLayout.addView(createButton(GdxActivity.class)); linearLayout.addView(createLabel("Features")); diff --git a/vtm-json/src/org/oscim/tiling/source/geojson/OpenMapTilesGeojsonTileSource.java b/vtm-json/src/org/oscim/tiling/source/geojson/OpenMapTilesGeojsonTileSource.java deleted file mode 100644 index c8aa8e4e..00000000 --- a/vtm-json/src/org/oscim/tiling/source/geojson/OpenMapTilesGeojsonTileSource.java +++ /dev/null @@ -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 . - */ -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> extends UrlTileSource.Builder { - 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 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 properties) { - boolean hasName = false; - String fallbackName = null; - - for (Map.Entry 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)); - } - } - } -} diff --git a/vtm-playground/src/org/oscim/test/OpenMapTilesGeojsonTest.java b/vtm-playground/src/org/oscim/test/OpenMapTilesGeojsonTest.java deleted file mode 100644 index 3a09b51c..00000000 --- a/vtm-playground/src/org/oscim/test/OpenMapTilesGeojsonTest.java +++ /dev/null @@ -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 . - */ -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()); - } -}