From 42aaf3e346c583cbfd68e0f379a705a41af5238f Mon Sep 17 00:00:00 2001 From: tobrun Date: Mon, 3 Sep 2018 15:43:12 +0200 Subject: [android] - add get source id to supported layer types --- .../mapbox/mapboxsdk/style/layers/CircleLayer.java | 10 ++++++++++ .../mapboxsdk/style/layers/FillExtrusionLayer.java | 10 ++++++++++ .../mapbox/mapboxsdk/style/layers/FillLayer.java | 10 ++++++++++ .../mapboxsdk/style/layers/HeatmapLayer.java | 10 ++++++++++ .../mapboxsdk/style/layers/HillshadeLayer.java | 10 ++++++++++ .../com/mapbox/mapboxsdk/style/layers/Layer.java | 3 +++ .../mapbox/mapboxsdk/style/layers/LineLayer.java | 10 ++++++++++ .../mapbox/mapboxsdk/style/layers/RasterLayer.java | 10 ++++++++++ .../mapbox/mapboxsdk/style/layers/SymbolLayer.java | 10 ++++++++++ .../mapbox/mapboxsdk/style/layers/layer.java.ejs | 12 ++++++++++++ .../mapboxsdk/testapp/style/CircleLayerTest.java | 12 ++++++++++++ .../testapp/style/FillExtrusionLayerTest.java | 12 ++++++++++++ .../mapboxsdk/testapp/style/FillLayerTest.java | 12 ++++++++++++ .../mapboxsdk/testapp/style/HeatmapLayerTest.java | 12 ++++++++++++ .../testapp/style/HillshadeLayerTest.java | 12 ++++++++++++ .../mapboxsdk/testapp/style/LineLayerTest.java | 12 ++++++++++++ .../mapboxsdk/testapp/style/RasterLayerTest.java | 12 ++++++++++++ .../mapboxsdk/testapp/style/SymbolLayerTest.java | 12 ++++++++++++ .../mapbox/mapboxsdk/testapp/style/layer.junit.ejs | 14 ++++++++++++++ platform/android/src/style/layers/layer.cpp | 22 ++++++++++++++++++++++ platform/android/src/style/layers/layer.hpp | 2 ++ 21 files changed, 229 insertions(+) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/CircleLayer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/CircleLayer.java index 9d2b9d89a5..4718adc5c1 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/CircleLayer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/CircleLayer.java @@ -67,6 +67,16 @@ public class CircleLayer extends Layer { return this; } + /** + * Get the source id. + * + * @return id of the source + */ + public String getSourceId() { + checkThread(); + return nativeGetSourceId(); + } + /** * Get the source layer. * diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/FillExtrusionLayer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/FillExtrusionLayer.java index 2de0de06d9..339b25b3f7 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/FillExtrusionLayer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/FillExtrusionLayer.java @@ -67,6 +67,16 @@ public class FillExtrusionLayer extends Layer { return this; } + /** + * Get the source id. + * + * @return id of the source + */ + public String getSourceId() { + checkThread(); + return nativeGetSourceId(); + } + /** * Get the source layer. * diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/FillLayer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/FillLayer.java index 6e28900c26..295ffd3963 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/FillLayer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/FillLayer.java @@ -67,6 +67,16 @@ public class FillLayer extends Layer { return this; } + /** + * Get the source id. + * + * @return id of the source + */ + public String getSourceId() { + checkThread(); + return nativeGetSourceId(); + } + /** * Get the source layer. * diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/HeatmapLayer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/HeatmapLayer.java index f1076ecd96..796f6a28bb 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/HeatmapLayer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/HeatmapLayer.java @@ -67,6 +67,16 @@ public class HeatmapLayer extends Layer { return this; } + /** + * Get the source id. + * + * @return id of the source + */ + public String getSourceId() { + checkThread(); + return nativeGetSourceId(); + } + /** * Get the source layer. * diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/HillshadeLayer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/HillshadeLayer.java index f706e5a234..d548d2c9f6 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/HillshadeLayer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/HillshadeLayer.java @@ -67,6 +67,16 @@ public class HillshadeLayer extends Layer { return this; } + /** + * Get the source id. + * + * @return id of the source + */ + public String getSourceId() { + checkThread(); + return nativeGetSourceId(); + } + /** * Set a property or properties. * diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/Layer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/Layer.java index 605f883bdb..b17c4a661a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/Layer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/Layer.java @@ -108,6 +108,9 @@ public abstract class Layer { @Keep protected native String nativeGetSourceLayer(); + @Keep + protected native String nativeGetSourceId(); + @Keep protected native float nativeGetMinZoom(); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/LineLayer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/LineLayer.java index 9130bfd76f..f6022f836a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/LineLayer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/LineLayer.java @@ -67,6 +67,16 @@ public class LineLayer extends Layer { return this; } + /** + * Get the source id. + * + * @return id of the source + */ + public String getSourceId() { + checkThread(); + return nativeGetSourceId(); + } + /** * Get the source layer. * diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/RasterLayer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/RasterLayer.java index 50837a97be..792ea1193c 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/RasterLayer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/RasterLayer.java @@ -67,6 +67,16 @@ public class RasterLayer extends Layer { return this; } + /** + * Get the source id. + * + * @return id of the source + */ + public String getSourceId() { + checkThread(); + return nativeGetSourceId(); + } + /** * Set a property or properties. * diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/SymbolLayer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/SymbolLayer.java index 4389f6cb21..3c4924bb6f 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/SymbolLayer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/SymbolLayer.java @@ -67,6 +67,16 @@ public class SymbolLayer extends Layer { return this; } + /** + * Get the source id. + * + * @return id of the source + */ + public String getSourceId() { + checkThread(); + return nativeGetSourceId(); + } + /** * Get the source layer. * diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/layer.java.ejs b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/layer.java.ejs index 6ed58b1928..958cb7383d 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/layer.java.ejs +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/layer.java.ejs @@ -87,6 +87,18 @@ public class <%- camelize(type) %>Layer extends Layer { return this; } +<% } -%> +<% if (type !== 'background' && type !== 'custom') { -%> + /** + * Get the source id. + * + * @return id of the source + */ + public String getSourceId() { + checkThread(); + return nativeGetSourceId(); + } + <% } -%> <% if (type !== 'background' && type !== 'raster' && type !== 'hillshade') { -%> /** diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/CircleLayerTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/CircleLayerTest.java index 101d22a531..1e03a640d1 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/CircleLayerTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/CircleLayerTest.java @@ -50,6 +50,18 @@ public class CircleLayerTest extends BaseActivityTest { }); } + @Test + public void testSourceId() { + validateTestSetup(); + setupLayer(); + Timber.i("SourceId"); + invoke(mapboxMap, (uiController, mapboxMap) -> { + assertNotNull(layer); + // Get source id + assertEquals(layer.getSourceId(), "composite"); + }); + } + @Test public void testSetVisibility() { validateTestSetup(); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillExtrusionLayerTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillExtrusionLayerTest.java index ed509ccf4f..bbfc05229c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillExtrusionLayerTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillExtrusionLayerTest.java @@ -50,6 +50,18 @@ public class FillExtrusionLayerTest extends BaseActivityTest { }); } + @Test + public void testSourceId() { + validateTestSetup(); + setupLayer(); + Timber.i("SourceId"); + invoke(mapboxMap, (uiController, mapboxMap) -> { + assertNotNull(layer); + // Get source id + assertEquals(layer.getSourceId(), "composite"); + }); + } + @Test public void testSetVisibility() { validateTestSetup(); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillLayerTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillLayerTest.java index 0bcdae4113..66e943b64f 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillLayerTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillLayerTest.java @@ -50,6 +50,18 @@ public class FillLayerTest extends BaseActivityTest { }); } + @Test + public void testSourceId() { + validateTestSetup(); + setupLayer(); + Timber.i("SourceId"); + invoke(mapboxMap, (uiController, mapboxMap) -> { + assertNotNull(layer); + // Get source id + assertEquals(layer.getSourceId(), "composite"); + }); + } + @Test public void testSetVisibility() { validateTestSetup(); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/HeatmapLayerTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/HeatmapLayerTest.java index 3a81786df4..b832c4eae7 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/HeatmapLayerTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/HeatmapLayerTest.java @@ -50,6 +50,18 @@ public class HeatmapLayerTest extends BaseActivityTest { }); } + @Test + public void testSourceId() { + validateTestSetup(); + setupLayer(); + Timber.i("SourceId"); + invoke(mapboxMap, (uiController, mapboxMap) -> { + assertNotNull(layer); + // Get source id + assertEquals(layer.getSourceId(), "composite"); + }); + } + @Test public void testSetVisibility() { validateTestSetup(); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/HillshadeLayerTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/HillshadeLayerTest.java index e0121a704a..a78ccb0977 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/HillshadeLayerTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/HillshadeLayerTest.java @@ -50,6 +50,18 @@ public class HillshadeLayerTest extends BaseActivityTest { }); } + @Test + public void testSourceId() { + validateTestSetup(); + setupLayer(); + Timber.i("SourceId"); + invoke(mapboxMap, (uiController, mapboxMap) -> { + assertNotNull(layer); + // Get source id + assertEquals(layer.getSourceId(), "composite"); + }); + } + @Test public void testSetVisibility() { validateTestSetup(); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/LineLayerTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/LineLayerTest.java index 792dd84466..29ba0fa16b 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/LineLayerTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/LineLayerTest.java @@ -50,6 +50,18 @@ public class LineLayerTest extends BaseActivityTest { }); } + @Test + public void testSourceId() { + validateTestSetup(); + setupLayer(); + Timber.i("SourceId"); + invoke(mapboxMap, (uiController, mapboxMap) -> { + assertNotNull(layer); + // Get source id + assertEquals(layer.getSourceId(), "composite"); + }); + } + @Test public void testSetVisibility() { validateTestSetup(); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RasterLayerTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RasterLayerTest.java index 8440fad20a..728be85e50 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RasterLayerTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RasterLayerTest.java @@ -50,6 +50,18 @@ public class RasterLayerTest extends BaseActivityTest { }); } + @Test + public void testSourceId() { + validateTestSetup(); + setupLayer(); + Timber.i("SourceId"); + invoke(mapboxMap, (uiController, mapboxMap) -> { + assertNotNull(layer); + // Get source id + assertEquals(layer.getSourceId(), "composite"); + }); + } + @Test public void testSetVisibility() { validateTestSetup(); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/SymbolLayerTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/SymbolLayerTest.java index 1a5d4ebc2b..8cf452a6cf 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/SymbolLayerTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/SymbolLayerTest.java @@ -50,6 +50,18 @@ public class SymbolLayerTest extends BaseActivityTest { }); } + @Test + public void testSourceId() { + validateTestSetup(); + setupLayer(); + Timber.i("SourceId"); + invoke(mapboxMap, (uiController, mapboxMap) -> { + assertNotNull(layer); + // Get source id + assertEquals(layer.getSourceId(), "composite"); + }); + } + @Test public void testSetVisibility() { validateTestSetup(); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/layer.junit.ejs b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/layer.junit.ejs index a319d52ea3..142d1bd203 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/layer.junit.ejs +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/layer.junit.ejs @@ -60,6 +60,20 @@ public class <%- camelize(type) %>LayerTest extends BaseActivityTest { }); <% } -%> } +<% if (type !== 'background') { -%> + + @Test + public void testSourceId() { + validateTestSetup(); + setupLayer(); + Timber.i("SourceId"); + invoke(mapboxMap, (uiController, mapboxMap) -> { + assertNotNull(layer); + // Get source id + assertEquals(layer.getSourceId(), "composite"); + }); + } +<% } -%> @Test public void testSetVisibility() { diff --git a/platform/android/src/style/layers/layer.cpp b/platform/android/src/style/layers/layer.cpp index 6c08893411..48e09674e8 100644 --- a/platform/android/src/style/layers/layer.cpp +++ b/platform/android/src/style/layers/layer.cpp @@ -25,6 +25,8 @@ // C++ -> Java conversion #include "../conversion/property_value.hpp" +#include "custom_layer.hpp" +#include "background_layer.hpp" #include #include @@ -204,6 +206,25 @@ namespace android { return jni::Make(env, layer.accept(GetSourceLayerEvaluator())); } + struct GetSourceIdEvaluator { + std::string noop(std::string layerType) { + Log::Warning(mbgl::Event::JNI, "%s doesn't support get source id", layerType.c_str()); + return {}; + } + + std::string operator()(style::BackgroundLayer&) { return noop("BackgroundLayer"); } + std::string operator()(style::CustomLayer&) { return noop("CustomLayer"); } + + template + std::string operator()(LayerType& layer) { + return layer.getSourceID(); + } + }; + + jni::String Layer::getSourceId(jni::JNIEnv& env) { + return jni::Make(env, layer.accept(GetSourceIdEvaluator())); + } + jni::jfloat Layer::getMinZoom(jni::JNIEnv&){ return layer.getMinZoom(); } @@ -242,6 +263,7 @@ namespace android { METHOD(&Layer::getFilter, "nativeGetFilter"), METHOD(&Layer::setSourceLayer, "nativeSetSourceLayer"), METHOD(&Layer::getSourceLayer, "nativeGetSourceLayer"), + METHOD(&Layer::getSourceId, "nativeGetSourceId"), METHOD(&Layer::getMinZoom, "nativeGetMinZoom"), METHOD(&Layer::getMaxZoom, "nativeGetMaxZoom"), METHOD(&Layer::setMinZoom, "nativeSetMinZoom"), diff --git a/platform/android/src/style/layers/layer.hpp b/platform/android/src/style/layers/layer.hpp index 2486b0dfa6..41022bf74a 100644 --- a/platform/android/src/style/layers/layer.hpp +++ b/platform/android/src/style/layers/layer.hpp @@ -49,6 +49,8 @@ public: jni::String getId(jni::JNIEnv&); + jni::String getSourceId(jni::JNIEnv&); + style::Layer& get(); void setLayoutProperty(jni::JNIEnv&, jni::String, jni::Object<> value); -- cgit v1.2.1