summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortobrun <tobrun.van.nuland@gmail.com>2019-01-10 12:20:54 +0100
committerTobrun <tobrun@mapbox.com>2019-01-10 12:54:45 +0100
commit50f5bbcdab9009f5e68f865a4fcf77874c0434ff (patch)
treefff30710ebb3951e8f22775c7b87ef54a99e5f21
parent943cd0d66c624062de47d42ac30e3b8bde3ada8d (diff)
downloadqtlocation-mapboxgl-50f5bbcdab9009f5e68f865a4fcf77874c0434ff.tar.gz
[android] - update symbol layer example with regression test for symbols flashing
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java31
1 files changed, 24 insertions, 7 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java
index e1ec66cd1d..e6bcbe2bfc 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java
@@ -10,7 +10,6 @@ import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
-
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import com.mapbox.geojson.Feature;
@@ -30,6 +29,7 @@ import com.mapbox.mapboxsdk.testapp.R;
import com.mapbox.mapboxsdk.utils.BitmapUtils;
import java.util.List;
+import java.util.Objects;
import static com.mapbox.mapboxsdk.style.expressions.Expression.FormatOption.formatFontScale;
import static com.mapbox.mapboxsdk.style.expressions.Expression.FormatOption.formatTextFont;
@@ -37,7 +37,10 @@ import static com.mapbox.mapboxsdk.style.expressions.Expression.concat;
import static com.mapbox.mapboxsdk.style.expressions.Expression.format;
import static com.mapbox.mapboxsdk.style.expressions.Expression.formatEntry;
import static com.mapbox.mapboxsdk.style.expressions.Expression.get;
+import static com.mapbox.mapboxsdk.style.expressions.Expression.id;
import static com.mapbox.mapboxsdk.style.expressions.Expression.literal;
+import static com.mapbox.mapboxsdk.style.expressions.Expression.match;
+import static com.mapbox.mapboxsdk.style.expressions.Expression.stop;
import static com.mapbox.mapboxsdk.style.expressions.Expression.switchCase;
import static com.mapbox.mapboxsdk.style.expressions.Expression.toBool;
import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconAllowOverlap;
@@ -45,6 +48,7 @@ import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconAnchor;
import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconColor;
import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconIgnorePlacement;
import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconImage;
+import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconOpacity;
import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconSize;
import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.textAllowOverlap;
import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.textAnchor;
@@ -65,11 +69,13 @@ public class SymbolLayerActivity extends AppCompatActivity implements MapboxMap.
private static final String MARKER_SOURCE = "marker-source";
private static final String MARKER_LAYER = "marker-layer";
private static final String MARKER_ICON = "my-layers-image";
+ public static final String ID_FEATURE_PROPERTY = "id";
public static final String SELECTED_FEATURE_PROPERTY = "selected";
public static final String TITLE_FEATURE_PROPERTY = "title";
private GeoJsonSource geoJsonSource;
private FeatureCollection markerCollection;
+ private SymbolLayer symbolLayer;
private MapboxMap mapboxMap;
private MapView mapView;
private boolean initialFont;
@@ -104,13 +110,13 @@ public class SymbolLayerActivity extends AppCompatActivity implements MapboxMap.
// source
markerCollection = FeatureCollection.fromFeatures(new Feature[] {
- Feature.fromGeometry(Point.fromLngLat(4.91638, 52.35673), featureProperties("Marker 1")),
- Feature.fromGeometry(Point.fromLngLat(4.91638, 52.34673), featureProperties("Marker 2"))
+ Feature.fromGeometry(Point.fromLngLat(4.91638, 52.35673), featureProperties("1", "Marker 1")),
+ Feature.fromGeometry(Point.fromLngLat(4.91638, 52.34673), featureProperties("2", "Marker 2"))
});
geoJsonSource = new GeoJsonSource(MARKER_SOURCE, markerCollection);
// layer
- SymbolLayer layer = new SymbolLayer(MARKER_LAYER, MARKER_SOURCE)
+ symbolLayer = new SymbolLayer(MARKER_LAYER, MARKER_SOURCE)
.withProperties(
iconImage(MARKER_ICON),
iconIgnorePlacement(true),
@@ -138,9 +144,9 @@ public class SymbolLayerActivity extends AppCompatActivity implements MapboxMap.
mapboxMap.setStyle(new Style.Builder()
.fromUrl("asset://streets.json")
- .withImage(MARKER_ICON, icLayersBitmap)
+ .withImage(MARKER_ICON, Objects.requireNonNull(icLayersBitmap), true)
.withSource(geoJsonSource)
- .withLayer(layer),
+ .withLayer(symbolLayer),
style -> styleLoaded = true
);
@@ -157,11 +163,21 @@ public class SymbolLayerActivity extends AppCompatActivity implements MapboxMap.
for (Feature feature : markerCollection.features()) {
if (feature.getStringProperty(TITLE_FEATURE_PROPERTY)
.equals(features.get(0).getStringProperty(TITLE_FEATURE_PROPERTY))) {
+
+ // use DDS
boolean selected = feature.getBooleanProperty(SELECTED_FEATURE_PROPERTY);
feature.addBooleanProperty(SELECTED_FEATURE_PROPERTY, !selected);
+
+ // validate symbol flicker regression for #13407
+ symbolLayer.setProperties(iconOpacity(match(
+ get(ID_FEATURE_PROPERTY), literal(1.0f),
+ stop(feature.getStringProperty("id"), 0.3f)
+ )));
}
}
geoJsonSource.setGeoJson(markerCollection);
+
+
}
return false;
@@ -187,8 +203,9 @@ public class SymbolLayerActivity extends AppCompatActivity implements MapboxMap.
initialFont = !initialFont;
}
- private JsonObject featureProperties(String title) {
+ private JsonObject featureProperties(String id, String title) {
JsonObject object = new JsonObject();
+ object.add(ID_FEATURE_PROPERTY, new JsonPrimitive(id));
object.add(TITLE_FEATURE_PROPERTY, new JsonPrimitive(title));
object.add(SELECTED_FEATURE_PROPERTY, new JsonPrimitive(false));
return object;