diff options
author | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2018-05-17 12:29:33 +0200 |
---|---|---|
committer | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2018-05-17 12:39:00 +0200 |
commit | 9d1b7e7e2592859f561e26d53fc766fad9d8730a (patch) | |
tree | 2a08cf280053c58b0fd6a2bb3b20cdeb7b7035ae | |
parent | d05fa404a8b2d67c908c857cbebacd38f594052a (diff) | |
download | qtlocation-mapboxgl-9d1b7e7e2592859f561e26d53fc766fad9d8730a.tar.gz |
[android] - selected symbol with z-index example
-rw-r--r-- | platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/SimpleMapActivity.java | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/SimpleMapActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/SimpleMapActivity.java index 8f8a5af3cc..3dfa2655f6 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/SimpleMapActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/SimpleMapActivity.java @@ -3,15 +3,29 @@ package com.mapbox.mapboxsdk.testapp.activity.maplayout; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; +import com.mapbox.geojson.Feature; +import com.mapbox.geojson.FeatureCollection; +import com.mapbox.geojson.Point; +import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; +import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; +import com.mapbox.mapboxsdk.style.expressions.Expression; +import com.mapbox.mapboxsdk.style.layers.Layer; +import com.mapbox.mapboxsdk.style.layers.PropertyFactory; +import com.mapbox.mapboxsdk.style.layers.SymbolLayer; +import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; import com.mapbox.mapboxsdk.testapp.R; +import java.util.ArrayList; +import java.util.List; + /** * Test activity showcasing a simple MapView without any MapboxMap interaction. */ public class SimpleMapActivity extends AppCompatActivity { private MapView mapView; + private boolean selected; @Override protected void onCreate(Bundle savedInstanceState) { @@ -20,6 +34,59 @@ public class SimpleMapActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); + mapView.getMapAsync(mapboxMap -> { + List<Feature> features = new ArrayList<>(); + Feature feature1 = Feature.fromGeometry(Point.fromLngLat(21.032070, 52.2401)); + feature1.addBooleanProperty("selected", false); + Feature feature2 = Feature.fromGeometry(Point.fromLngLat(21.032070, 52.2402)); + feature2.addBooleanProperty("selected", false); + Feature feature3 = Feature.fromGeometry(Point.fromLngLat(21.032070, 52.2403)); + feature3.addBooleanProperty("selected", false); + + features.add(feature1); + features.add(feature2); + features.add(feature3); + + FeatureCollection featureCollection = FeatureCollection.fromFeatures(features); + + GeoJsonSource source = new GeoJsonSource("source", featureCollection); + mapboxMap.addSource(source); + + Layer layer = new SymbolLayer("layer", "source") + .withProperties(PropertyFactory.iconImage( + Expression.switchCase( + Expression.get("selected"), Expression.literal(""), + Expression.literal("cafe-15") + )), + PropertyFactory.iconSize(2f), + PropertyFactory.iconAllowOverlap(true)); + mapboxMap.addLayer(layer); + + Layer layerSelected = new SymbolLayer("layerSelected", "source") + .withProperties(PropertyFactory.iconImage( + Expression.switchCase( + Expression.get("selected"), Expression.literal("restaurant-15"), + Expression.literal("") + )), + PropertyFactory.iconSize(2f), + PropertyFactory.iconAllowOverlap(true)); + mapboxMap.addLayerAbove(layerSelected, "layer"); //noting, that we are explicitly z-indexing the selected layer + + mapboxMap.addOnMapClickListener(point -> { + if (selected) { + feature3.addBooleanProperty("selected", false); + } else { + feature3.addBooleanProperty("selected", true); + } + source.setGeoJson(featureCollection); + selected = !selected; + }); + + mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom( + new LatLng(52.2401, 21.032070), + 15.5 + )); + }); } @Override |