diff options
author | tobrun <tobrun.van.nuland@gmail.com> | 2019-01-10 12:19:27 +0100 |
---|---|---|
committer | tobrun <tobrun.van.nuland@gmail.com> | 2019-01-10 12:19:27 +0100 |
commit | 2a5c7bf2bd6588977a773a2d7b675a34ee3dc645 (patch) | |
tree | f8915af082469a0ec4917545b0cf11b080e35079 | |
parent | b6894557a748b53a9f5c887872187099a7c6f2d1 (diff) | |
download | qtlocation-mapboxgl-upstream/tvn-test-for-13407.tar.gz |
[android] - update symbol layer example with regression test for symbols flashingupstream/tvn-test-for-13407
3 files changed, 27 insertions, 10 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; diff --git a/platform/android/build.gradle b/platform/android/build.gradle index 86e4f4f5f8..2af9abac6c 100644 --- a/platform/android/build.gradle +++ b/platform/android/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.4' + classpath 'com.android.tools.build:gradle:3.2.1' classpath dependenciesList.licensesPlugin classpath dependenciesList.kotlinPlugin } diff --git a/platform/android/gradle/wrapper/gradle-wrapper.properties b/platform/android/gradle/wrapper/gradle-wrapper.properties index 84af82d181..80812f2565 100644 --- a/platform/android/gradle/wrapper/gradle-wrapper.properties +++ b/platform/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon May 14 12:12:39 CEST 2018 +#Thu Jan 10 09:41:30 CET 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip |