summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java
diff options
context:
space:
mode:
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.java33
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;
}