summaryrefslogtreecommitdiff
path: root/platform/android/src/style/layers/layer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/style/layers/layer.cpp')
-rw-r--r--platform/android/src/style/layers/layer.cpp34
1 files changed, 31 insertions, 3 deletions
diff --git a/platform/android/src/style/layers/layer.cpp b/platform/android/src/style/layers/layer.cpp
index dbf71fd2af..5352f9e548 100644
--- a/platform/android/src/style/layers/layer.cpp
+++ b/platform/android/src/style/layers/layer.cpp
@@ -3,6 +3,7 @@
#include <jni/jni.hpp>
+#include <mbgl/style/transition_options.hpp>
#include <mbgl/util/logging.hpp>
// Java -> C++ conversion
@@ -90,7 +91,7 @@ namespace android {
Value value(env, jvalue);
// Convert and set property
- optional<mbgl::style::conversion::Error> error = mbgl::style::conversion::setPaintProperty(layer, jni::Make<std::string>(env, jname), value, mbgl::optional<std::string>());
+ optional<mbgl::style::conversion::Error> error = mbgl::style::conversion::setPaintProperty(layer, jni::Make<std::string>(env, jname), value);
if (error) {
mbgl::Log::Error(mbgl::Event::JNI, "Error setting property: " + jni::Make<std::string>(env, jname) + " " + error->message);
return;
@@ -104,9 +105,10 @@ namespace android {
Value wrapped(env, jfilter);
Filter filter;
- Result<Filter> converted = convert<Filter>(wrapped);
+ Error error;
+ optional<Filter> converted = convert<Filter>(wrapped, error);
if (!converted) {
- mbgl::Log::Error(mbgl::Event::JNI, "Error setting filter: " + converted.error().message);
+ mbgl::Log::Error(mbgl::Event::JNI, "Error setting filter: " + error.message);
return;
}
filter = std::move(*converted);
@@ -119,6 +121,8 @@ namespace android {
layer.as<SymbolLayer>()->setFilter(filter);
} else if (layer.is<CircleLayer>()) {
layer.as<CircleLayer>()->setFilter(filter);
+ } else if (layer.is<FillExtrusionLayer>()){
+ layer.as<FillExtrusionLayer>()->setFilter(filter);
} else {
mbgl::Log::Warning(mbgl::Event::JNI, "Layer doesn't support filters");
}
@@ -137,11 +141,34 @@ namespace android {
layer.as<SymbolLayer>()->setSourceLayer(layerId);
} else if (layer.is<CircleLayer>()) {
layer.as<CircleLayer>()->setSourceLayer(layerId);
+ } else if(layer.is<FillExtrusionLayer>()) {
+ layer.as<FillExtrusionLayer>()->setSourceLayer(layerId);
} else {
mbgl::Log::Warning(mbgl::Event::JNI, "Layer doesn't support source layer");
}
}
+ jni::String Layer::getSourceLayer(jni::JNIEnv& env) {
+ using namespace mbgl::style;
+
+ std::string sourceLayerId;
+ if (layer.is<FillLayer>()) {
+ sourceLayerId = layer.as<FillLayer>()->getSourceLayer();
+ } else if (layer.is<LineLayer>()) {
+ sourceLayerId = layer.as<LineLayer>()->getSourceLayer();
+ } else if (layer.is<SymbolLayer>()) {
+ sourceLayerId = layer.as<SymbolLayer>()->getSourceLayer();
+ } else if (layer.is<CircleLayer>()) {
+ sourceLayerId = layer.as<CircleLayer>()->getSourceLayer();
+ } else if (layer.is<FillExtrusionLayer>()) {
+ sourceLayerId = layer.as<FillExtrusionLayer>()->getSourceLayer();
+ } else {
+ mbgl::Log::Warning(mbgl::Event::JNI, "Layer doesn't support source layer");
+ }
+
+ return jni::Make<jni::String>(env, sourceLayerId);
+ }
+
jni::jfloat Layer::getMinZoom(jni::JNIEnv&){
return layer.getMinZoom();
}
@@ -178,6 +205,7 @@ namespace android {
METHOD(&Layer::setPaintProperty, "nativeSetPaintProperty"),
METHOD(&Layer::setFilter, "nativeSetFilter"),
METHOD(&Layer::setSourceLayer, "nativeSetSourceLayer"),
+ METHOD(&Layer::getSourceLayer, "nativeGetSourceLayer"),
METHOD(&Layer::getMinZoom, "nativeGetMinZoom"),
METHOD(&Layer::getMaxZoom, "nativeGetMaxZoom"),
METHOD(&Layer::setMinZoom, "nativeSetMinZoom"),