summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortobrun <tobrun.van.nuland@gmail.com>2018-01-08 14:03:02 +0100
committertobrun <tobrun.van.nuland@gmail.com>2018-01-08 14:03:02 +0100
commitaa4cc2dd58f504ba5eba95e43950bbea488ea1dd (patch)
tree11626f401db191254c4d24bf2c348498390d136a
parent7f2f40fb8de9d51f8a74e808305d0c226ce56819 (diff)
downloadqtlocation-mapboxgl-upstream/tvn-expressions-accessor.tar.gz
[android] - add expression accessor for layout and paint propertiesupstream/tvn-expressions-accessor
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/PropertyValue.java26
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java5
-rw-r--r--platform/android/src/style/conversion/property_value.hpp6
3 files changed, 36 insertions, 1 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/PropertyValue.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/PropertyValue.java
index a57c440df4..44f58a54c2 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/PropertyValue.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/PropertyValue.java
@@ -5,6 +5,7 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.mapbox.mapboxsdk.exceptions.ConversionException;
+import com.mapbox.mapboxsdk.style.expressions.Expression;
import com.mapbox.mapboxsdk.style.functions.Function;
import com.mapbox.mapboxsdk.utils.ColorUtils;
@@ -57,6 +58,31 @@ public class PropertyValue<T> {
return !isNull() && !isFunction();
}
+ /**
+ * Returns if this is a expression.
+ *
+ * @return true if is a expression, false if not
+ */
+ public boolean isExpression() {
+ return !isNull() && value instanceof Expression;
+ }
+
+ /**
+ * Get the expression of the property.
+ *
+ * @return the expression value
+ */
+ @Nullable
+ public Expression<T> getExpression() {
+ if (isExpression()) {
+ // noinspection unchecked
+ return (Expression<T>) value;
+ } else {
+ Timber.e("not an expression, try value");
+ return null;
+ }
+ }
+
@Nullable
public Function<?, T> getFunction() {
if (isFunction()) {
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java
index 1ef59db9b1..fe0001f38f 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java
@@ -269,6 +269,11 @@ public class SymbolGeneratorActivity extends AppCompatActivity implements OnMapR
)
);
+ // debug log getters
+ SymbolLayer symbolLayer = mapboxMap.getLayerAs(LAYER_ID);
+ Timber.e("Property value for %s: %s","iconImage", symbolLayer.getIconImage().getExpression());
+ Timber.e("Property value for %s: %s","iconAllowOverlap", symbolLayer.getIconAllowOverlap().getValue());
+
new GenerateSymbolTask(mapboxMap, this).execute(featureCollection);
}
diff --git a/platform/android/src/style/conversion/property_value.hpp b/platform/android/src/style/conversion/property_value.hpp
index a58cf975a7..5498faaf0a 100644
--- a/platform/android/src/style/conversion/property_value.hpp
+++ b/platform/android/src/style/conversion/property_value.hpp
@@ -38,7 +38,11 @@ public:
}
jni::jobject* operator()(const mbgl::style::CompositeFunction<T> &value) const {
- return *convert<jni::jobject*, mbgl::style::CompositeFunction<T>>(env, value);
+ return *convert<jni::jobject*, mbgl::style::CompositeFunction<T>>(env, value);
+ }
+
+ jni::jobject*operator()(const mbgl::style::expression::Expression &value) const {
+ return *convert<jni::jobject*, mbgl::style::expression::Expression>(env, value);
}
private: