diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2018-09-25 11:30:59 +0200 |
---|---|---|
committer | Tobrun <tobrun@mapbox.com> | 2018-09-25 14:53:30 +0200 |
commit | 0f18c0ce790a8d252f737385cd3599e6ac0e1ecd (patch) | |
tree | 38e88cf4e46a60693c82d62ed7746efb61fa1176 /platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java | |
parent | 18f6e5a34e12771d6d65afb58e148006693c5fd0 (diff) | |
download | qtlocation-mapboxgl-0f18c0ce790a8d252f737385cd3599e6ac0e1ecd.tar.gz |
[android] - add selected state paradigm to SymbolLayerActivity
[android] - update Circle layer activity with cluster configuration
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java | 33 |
1 files changed, 22 insertions, 11 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 c62eef20f4..acdb1d216d 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 @@ -30,6 +30,9 @@ import com.mapbox.mapboxsdk.utils.BitmapUtils; import java.util.List; import static com.mapbox.mapboxsdk.style.expressions.Expression.get; +import static com.mapbox.mapboxsdk.style.expressions.Expression.literal; +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; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconAnchor; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconColor; @@ -55,7 +58,11 @@ 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 SELECTED_FEATURE_PROPERTY = "selected"; + public static final String TITLE_FEATURE_PROPERTY = "title"; + private GeoJsonSource geoJsonSource; + private FeatureCollection markerCollection; private MapboxMap mapboxMap; private MapView mapView; private boolean initialFont; @@ -95,11 +102,11 @@ public class SymbolLayerActivity extends AppCompatActivity implements MapboxMap. ); // Add a source - FeatureCollection markers = FeatureCollection.fromFeatures(new Feature[] { + 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")) }); - mapboxMap.addSource(new GeoJsonSource(MARKER_SOURCE, markers)); + mapboxMap.addSource(geoJsonSource = new GeoJsonSource(MARKER_SOURCE, markerCollection)); // Add the symbol-layer mapboxMap.addLayer( @@ -108,9 +115,10 @@ public class SymbolLayerActivity extends AppCompatActivity implements MapboxMap. iconImage(MARKER_ICON), iconIgnorePlacement(true), iconAllowOverlap(true), + iconSize(switchCase(toBool(get(SELECTED_FEATURE_PROPERTY)), literal(3.0f), literal(1.0f))), iconAnchor(Property.ICON_ANCHOR_BOTTOM), iconColor(Color.RED), - textField(get("title")), + textField(get(TITLE_FEATURE_PROPERTY)), textFont(new String[] {"DIN Offc Pro Regular", "Arial Unicode MS Regular"}), textColor(Color.RED), textAllowOverlap(true), @@ -129,13 +137,15 @@ public class SymbolLayerActivity extends AppCompatActivity implements MapboxMap. // Query which features are clicked PointF screenLoc = mapboxMap.getProjection().toScreenLocation(point); List<Feature> features = mapboxMap.queryRenderedFeatures(screenLoc, MARKER_LAYER); - - SymbolLayer layer = mapboxMap.getLayerAs(MARKER_LAYER); - if (features.size() == 0) { - // Reset - layer.setProperties(iconSize(1f)); - } else { - layer.setProperties(iconSize(3f)); + if (!features.isEmpty()) { + for (Feature feature : markerCollection.features()) { + if (feature.getStringProperty(TITLE_FEATURE_PROPERTY) + .equals(features.get(0).getStringProperty(TITLE_FEATURE_PROPERTY))) { + boolean selected = feature.getBooleanProperty(SELECTED_FEATURE_PROPERTY); + feature.addBooleanProperty(SELECTED_FEATURE_PROPERTY, !selected); + } + } + geoJsonSource.setGeoJson(markerCollection); } } @@ -161,7 +171,8 @@ public class SymbolLayerActivity extends AppCompatActivity implements MapboxMap. private JsonObject featureProperties(String title) { JsonObject object = new JsonObject(); - object.add("title", new JsonPrimitive(title)); + object.add(TITLE_FEATURE_PROPERTY, new JsonPrimitive(title)); + object.add(SELECTED_FEATURE_PROPERTY, new JsonPrimitive(false)); return object; } |