From 699d63db105f1ffc6f1d765de442ec705d88dece Mon Sep 17 00:00:00 2001
From: Emux <devemux86@gmail.com>
Date: Tue, 9 Jan 2018 12:06:22 +0200
Subject: [PATCH] S3DB layer samples #475

---
 docs/Changelog.md                             |  1 +
 vtm-android-example/AndroidManifest.xml       |  3 ++
 .../android/test/MapsforgeMapActivity.java    | 18 +++++++++--
 .../android/test/MapsforgeS3DBActivity.java   | 22 +++++++++++++
 .../src/org/oscim/android/test/Samples.java   |  3 +-
 .../src/org/oscim/test/MapsforgeS3DBTest.java | 31 +++++++++++++++++++
 .../src/org/oscim/test/MapsforgeTest.java     | 14 +++++++--
 7 files changed, 87 insertions(+), 5 deletions(-)
 create mode 100644 vtm-android-example/src/org/oscim/android/test/MapsforgeS3DBActivity.java
 create mode 100644 vtm-playground/src/org/oscim/test/MapsforgeS3DBTest.java

diff --git a/docs/Changelog.md b/docs/Changelog.md
index 2baf74ac..1d6fc592 100644
--- a/docs/Changelog.md
+++ b/docs/Changelog.md
@@ -2,6 +2,7 @@
 
 ## New since 0.9.2
 
+- S3DB layer [#475](https://github.com/mapsforge/vtm/pull/475)
 - OpenMapTiles GeoJSON vector tiles [#385](https://github.com/mapsforge/vtm/issues/385)
 - 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 1786c29a..a95510e9 100644
--- a/vtm-android-example/AndroidManifest.xml
+++ b/vtm-android-example/AndroidManifest.xml
@@ -63,6 +63,9 @@
         <activity
             android:name=".MapsforgePolyLabelActivity"
             android:configChanges="keyboardHidden|orientation|screenSize" />
+        <activity
+            android:name=".MapsforgeS3DBActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize" />
         <activity
             android:name=".MapsforgeStyleActivity"
             android:configChanges="keyboardHidden|orientation|screenSize" />
diff --git a/vtm-android-example/src/org/oscim/android/test/MapsforgeMapActivity.java b/vtm-android-example/src/org/oscim/android/test/MapsforgeMapActivity.java
index d219a283..55d047a4 100644
--- a/vtm-android-example/src/org/oscim/android/test/MapsforgeMapActivity.java
+++ b/vtm-android-example/src/org/oscim/android/test/MapsforgeMapActivity.java
@@ -1,6 +1,6 @@
 /*
  * Copyright 2014 Hannes Janetzek
- * Copyright 2016-2017 devemux86
+ * Copyright 2016-2018 devemux86
  * Copyright 2017 Longri
  *
  * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
@@ -34,6 +34,7 @@ import org.oscim.core.Tile;
 import org.oscim.layers.TileGridLayer;
 import org.oscim.layers.tile.MapTile;
 import org.oscim.layers.tile.buildings.BuildingLayer;
+import org.oscim.layers.tile.buildings.S3DBLayer;
 import org.oscim.layers.tile.vector.VectorTileLayer;
 import org.oscim.layers.tile.vector.labeling.LabelLayer;
 import org.oscim.renderer.BitmapRenderer;
@@ -64,9 +65,19 @@ public class MapsforgeMapActivity extends MapActivity {
     private TileGridLayer mGridLayer;
     private DefaultMapScaleBar mMapScaleBar;
     private Menu mMenu;
+    private boolean mS3db;
     private VectorTileLayer mTileLayer;
     MapFileTileSource mTileSource;
 
+    public MapsforgeMapActivity() {
+        this(false);
+    }
+
+    public MapsforgeMapActivity(boolean s3db) {
+        super();
+        mS3db = s3db;
+    }
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -173,7 +184,10 @@ public class MapsforgeMapActivity extends MapActivity {
                 mTileLayer = mMap.setBaseMap(mTileSource);
                 loadTheme(null);
 
-                mMap.layers().add(new BuildingLayer(mMap, mTileLayer));
+                if (mS3db)
+                    mMap.layers().add(new S3DBLayer(mMap, mTileLayer));
+                else
+                    mMap.layers().add(new BuildingLayer(mMap, mTileLayer));
                 mMap.layers().add(new LabelLayer(mMap, mTileLayer));
 
                 mMapScaleBar = new DefaultMapScaleBar(mMap);
diff --git a/vtm-android-example/src/org/oscim/android/test/MapsforgeS3DBActivity.java b/vtm-android-example/src/org/oscim/android/test/MapsforgeS3DBActivity.java
new file mode 100644
index 00000000..f542faa6
--- /dev/null
+++ b/vtm-android-example/src/org/oscim/android/test/MapsforgeS3DBActivity.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2018 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;
+
+public class MapsforgeS3DBActivity extends MapsforgeMapActivity {
+
+    public MapsforgeS3DBActivity() {
+        super(true);
+    }
+}
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 79642206..30ed6350 100644
--- a/vtm-android-example/src/org/oscim/android/test/Samples.java
+++ b/vtm-android-example/src/org/oscim/android/test/Samples.java
@@ -1,7 +1,7 @@
 /*
  * Copyright 2010, 2011, 2012, 2013 mapsforge.org
  * Copyright 2013 Hannes Janetzek
- * Copyright 2016-2017 devemux86
+ * Copyright 2016-2018 devemux86
  * Copyright 2017 Longri
  * Copyright 2017 nebular
  *
@@ -98,6 +98,7 @@ public class Samples extends Activity {
         linearLayout.addView(createLabel("Vector Features"));
         linearLayout.addView(createButton(MapsforgeStyleActivity.class));
         linearLayout.addView(createButton(MapsforgePolyLabelActivity.class));
+        linearLayout.addView(createButton(MapsforgeS3DBActivity.class));
         linearLayout.addView(createButton(AtlasThemeActivity.class));
         linearLayout.addView(createButton(POTTextureActivity.class));
 
diff --git a/vtm-playground/src/org/oscim/test/MapsforgeS3DBTest.java b/vtm-playground/src/org/oscim/test/MapsforgeS3DBTest.java
new file mode 100644
index 00000000..e08bbf86
--- /dev/null
+++ b/vtm-playground/src/org/oscim/test/MapsforgeS3DBTest.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2018 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 java.io.File;
+
+public class MapsforgeS3DBTest extends MapsforgeTest {
+
+    private MapsforgeS3DBTest(File mapFile) {
+        super(mapFile, true);
+    }
+
+    public static void main(String[] args) {
+        GdxMapApp.init();
+        GdxMapApp.run(new MapsforgeS3DBTest(getMapFile(args)));
+    }
+}
diff --git a/vtm-playground/src/org/oscim/test/MapsforgeTest.java b/vtm-playground/src/org/oscim/test/MapsforgeTest.java
index 1894017d..a9628d08 100644
--- a/vtm-playground/src/org/oscim/test/MapsforgeTest.java
+++ b/vtm-playground/src/org/oscim/test/MapsforgeTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2017 devemux86
+ * Copyright 2016-2018 devemux86
  *
  * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
  *
@@ -21,6 +21,7 @@ import org.oscim.core.Tile;
 import org.oscim.gdx.GdxMapApp;
 import org.oscim.gdx.GdxMapImpl;
 import org.oscim.layers.tile.buildings.BuildingLayer;
+import org.oscim.layers.tile.buildings.S3DBLayer;
 import org.oscim.layers.tile.vector.VectorTileLayer;
 import org.oscim.layers.tile.vector.labeling.LabelLayer;
 import org.oscim.renderer.BitmapRenderer;
@@ -39,9 +40,15 @@ import java.io.File;
 public class MapsforgeTest extends GdxMapImpl {
 
     private File mapFile;
+    private boolean s3db;
 
     MapsforgeTest(File mapFile) {
+        this(mapFile, false);
+    }
+
+    MapsforgeTest(File mapFile, boolean s3db) {
         this.mapFile = mapFile;
+        this.s3db = s3db;
     }
 
     @Override
@@ -53,7 +60,10 @@ public class MapsforgeTest extends GdxMapImpl {
         VectorTileLayer l = mMap.setBaseMap(tileSource);
         loadTheme(null);
 
-        mMap.layers().add(new BuildingLayer(mMap, l));
+        if (s3db)
+            mMap.layers().add(new S3DBLayer(mMap, l));
+        else
+            mMap.layers().add(new BuildingLayer(mMap, l));
         mMap.layers().add(new LabelLayer(mMap, l));
 
         DefaultMapScaleBar mapScaleBar = new DefaultMapScaleBar(mMap);