diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/DataDrivenStyleActivity.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/DataDrivenStyleActivity.java | 321 |
1 files changed, 198 insertions, 123 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/DataDrivenStyleActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/DataDrivenStyleActivity.java index 3a5b30f71f..cbac62bcc1 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/DataDrivenStyleActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/DataDrivenStyleActivity.java @@ -2,40 +2,37 @@ package com.mapbox.mapboxsdk.testapp.activity.style; import android.graphics.Color; import android.os.Bundle; -import android.support.annotation.RawRes; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; +import android.widget.TextView; import android.widget.Toast; +import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; -import com.mapbox.mapboxsdk.style.functions.stops.Stops; import com.mapbox.mapboxsdk.style.layers.FillLayer; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; import com.mapbox.mapboxsdk.style.sources.Source; import com.mapbox.mapboxsdk.testapp.R; +import com.mapbox.mapboxsdk.testapp.utils.ResourceUtils; -import java.io.BufferedReader; import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.StringWriter; -import java.io.Writer; import timber.log.Timber; -import static com.mapbox.mapboxsdk.style.functions.Function.composite; -import static com.mapbox.mapboxsdk.style.functions.Function.property; -import static com.mapbox.mapboxsdk.style.functions.Function.zoom; -import static com.mapbox.mapboxsdk.style.functions.stops.Stop.stop; -import static com.mapbox.mapboxsdk.style.functions.stops.Stops.categorical; -import static com.mapbox.mapboxsdk.style.functions.stops.Stops.exponential; -import static com.mapbox.mapboxsdk.style.functions.stops.Stops.interval; +import static com.mapbox.mapboxsdk.style.expressions.Expression.color; +import static com.mapbox.mapboxsdk.style.expressions.Expression.exponential; +import static com.mapbox.mapboxsdk.style.expressions.Expression.get; +import static com.mapbox.mapboxsdk.style.expressions.Expression.interpolate; +import static com.mapbox.mapboxsdk.style.expressions.Expression.linear; +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.step; +import static com.mapbox.mapboxsdk.style.expressions.Expression.stop; +import static com.mapbox.mapboxsdk.style.expressions.Expression.zoom; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.fillAntialias; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.fillColor; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.fillOpacity; @@ -59,22 +56,32 @@ public class DataDrivenStyleActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); + mapView.getMapAsync(map -> { + // Store for later + mapboxMap = map; - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap map) { - // Store for later - mapboxMap = map; + // Add a parks layer + addParksLayer(); + + // Add debug overlay + setupDebugZoomView(); - // Add a parks layer - addParksLayer(); + // Center and Zoom (Amsterdam, zoomed to streets) + mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(52.379189, 4.899431), 14)); + }); + } - // Center and Zoom (Amsterdam, zoomed to streets) - mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(52.379189, 4.899431), 14)); + private void setupDebugZoomView() { + final TextView textView = (TextView) findViewById(R.id.textZoom); + mapboxMap.setOnCameraChangeListener(new MapboxMap.OnCameraChangeListener() { + @Override + public void onCameraChange(CameraPosition position) { + textView.setText(String.format(getString(R.string.debug_zoom), position.zoom)); } }); } + @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_data_driven_style, menu); @@ -165,12 +172,11 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillColor( - zoom( - exponential( - stop(1, fillColor(Color.RED)), - stop(5, fillColor(Color.BLUE)), - stop(10, fillColor(Color.GREEN)) - ).withBase(0.5f) + interpolate( + exponential(0.5f), zoom(), + stop(1, color(Color.RED)), + stop(5, color(Color.BLUE)), + stop(10, color(Color.GREEN)) ) ) ); @@ -184,12 +190,11 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillColor( - zoom( - interval( - stop(1, fillColor(Color.RED)), - stop(5, fillColor(Color.BLUE)), - stop(10, fillColor(Color.GREEN)) - ) + step(zoom(), + color(Color.CYAN), + stop(1, color(Color.RED)), + stop(5, color(Color.BLUE)), + stop(10, color(Color.GREEN)) ) ) ); @@ -203,13 +208,12 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillColor( - property( - "stroke-width", - exponential( - stop(1f, fillColor(Color.RED)), - stop(5f, fillColor(Color.BLUE)), - stop(10f, fillColor(Color.GREEN)) - ).withBase(0.5f) + interpolate( + exponential(0.5f), + get("stroke-width"), + stop(1f, color(Color.RED)), + stop(5f, color(Color.BLUE)), + stop(10f, color(Color.GREEN)) ) ) ); @@ -223,13 +227,13 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillColor( - property( - "name", - categorical( - stop("Westerpark", fillColor(Color.RED)), - stop("Jordaan", fillColor(Color.BLUE)), - stop("Prinseneiland", fillColor(Color.GREEN)) - )) + match( + get("name"), + literal("Westerpark"), color(Color.RED), + literal("Jordaan"), color(Color.BLUE), + literal("Prinseneiland"), color(Color.GREEN), + color(Color.CYAN) + ) ) ); @@ -242,9 +246,7 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillOpacity( - property( - "fill-opacity", - Stops.<Float>identity()) + get("fill-opacity") ) ); @@ -257,13 +259,13 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillColor( - property( - "stroke-width", - interval( - stop(1f, fillColor(Color.RED)), - stop(5f, fillColor(Color.BLUE)), - stop(10f, fillColor(Color.GREEN)) - )) + step( + get("stroke-width"), + color(Color.CYAN), + stop(1f, color(Color.RED)), + stop(2f, color(Color.BLUE)), + stop(3f, color(Color.GREEN)) + ) ) ); @@ -276,16 +278,30 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillColor( - composite( - "stroke-width", - exponential( - stop(1, 1, fillColor(Color.RED)), - stop(10, 2, fillColor(Color.BLUE)), - stop(22, 3, fillColor(Color.GREEN)), - stop(1, 1, fillColor(Color.CYAN)), - stop(10, 2, fillColor(Color.GRAY)), - stop(22, 3, fillColor(Color.YELLOW)) - ).withBase(1f) + interpolate( + exponential(1f), + zoom(), + stop(12, step( + get("stroke-width"), + color(Color.BLACK), + stop(1f, color(Color.RED)), + stop(2f, color(Color.WHITE)), + stop(3f, color(Color.BLUE)) + )), + stop(15, step( + get("stroke-width"), + color(Color.BLACK), + stop(1f, color(Color.YELLOW)), + stop(2f, color(Color.LTGRAY)), + stop(3f, color(Color.CYAN)) + )), + stop(18, step( + get("stroke-width"), + color(Color.BLACK), + stop(1f, color(Color.WHITE)), + stop(2f, color(Color.GRAY)), + stop(3f, color(Color.GREEN))) + ) ) ) ); @@ -294,21 +310,36 @@ public class DataDrivenStyleActivity extends AppCompatActivity { } private void addCompositeIntervalFunction() { - Timber.i("Add composite exponential function"); + Timber.i("Add composite interval function"); FillLayer layer = mapboxMap.getLayerAs(AMSTERDAM_PARKS_LAYER); assert layer != null; layer.setProperties( fillColor( - composite( - "stroke-width", - interval( - stop(1, 1, fillColor(Color.RED)), - stop(10, 2, fillColor(Color.BLUE)), - stop(22, 3, fillColor(Color.GREEN)), - stop(1, 1, fillColor(Color.CYAN)), - stop(10, 2, fillColor(Color.GRAY)), - stop(22, 3, fillColor(Color.YELLOW)) + interpolate( + linear(), + zoom(), + stop(12, step( + get("stroke-width"), + color(Color.BLACK), + stop(1f, color(Color.RED)), + stop(2f, color(Color.WHITE)), + stop(3f, color(Color.BLUE)) + )), + stop(15, step( + get("stroke-width"), + color(Color.BLACK), + stop(1f, color(Color.YELLOW)), + stop(2f, color(Color.LTGRAY)), + stop(3f, color(Color.CYAN)) + )), + stop(18, step( + get("stroke-width"), + color(Color.BLACK), + stop(1f, color(Color.WHITE)), + stop(2f, color(Color.GRAY)), + stop(3f, color(Color.GREEN)) )) + ) ) ); @@ -321,30 +352,92 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillColor( - composite( - "name", - categorical( - stop(7f, "Westerpark", fillColor(Color.RED)), - stop(8f, "Westerpark", fillColor(Color.BLUE)), - stop(9f, "Westerpark", fillColor(Color.RED)), - stop(10f, "Westerpark", fillColor(Color.BLUE)), - stop(11f, "Westerpark", fillColor(Color.RED)), - stop(12f, "Westerpark", fillColor(Color.BLUE)), - stop(13f, "Westerpark", fillColor(Color.RED)), - stop(14f, "Westerpark", fillColor(Color.BLUE)), - stop(15f, "Westerpark", fillColor(Color.RED)), - stop(16f, "Westerpark", fillColor(Color.BLUE)), - stop(17f, "Westerpark", fillColor(Color.RED)), - stop(18f, "Westerpark", fillColor(Color.BLUE)), - stop(19f, "Westerpark", fillColor(Color.RED)), - stop(20f, "Westerpark", fillColor(Color.BLUE)), - stop(21f, "Westerpark", fillColor(Color.RED)), - stop(22f, "Westerpark", fillColor(Color.BLUE)), - stop(14f, "Jordaan", fillColor(Color.GREEN)), - stop(18f, "Jordaan", fillColor(Color.CYAN)), - stop(14f, "Prinseneiland", fillColor(Color.WHITE)), - stop(18f, "Prinseneiland", fillColor(Color.BLACK)) + step(zoom(), + color(Color.BLACK), + stop(7f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(8f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + color(Color.BLACK) + )), + stop(9f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(10f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + color(Color.BLACK) + )), + stop(11f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(12f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + color(Color.BLACK) + )), + stop(13f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(14f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + literal("Jordaan"), color(Color.GREEN), + literal("PrinsenEiland"), color(Color.WHITE), + color(Color.BLACK) + )), + stop(15f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(16f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + color(Color.BLACK) + )), + stop(17f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(18f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + literal("Jordaan"), color(Color.CYAN), + color(Color.BLACK) + )), + stop(19f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(20f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + color(Color.BLACK) + )), + stop(21f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(22f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + color(Color.BLACK) )) + ) ) ); @@ -355,7 +448,7 @@ public class DataDrivenStyleActivity extends AppCompatActivity { // Add a source Source source; try { - source = new GeoJsonSource("amsterdam-parks-source", readRawResource(R.raw.amsterdam)); + source = new GeoJsonSource("amsterdam-parks-source", ResourceUtils.readRawResource(this, R.raw.amsterdam)); mapboxMap.addSource(source); } catch (IOException ioException) { Toast.makeText( @@ -365,7 +458,6 @@ public class DataDrivenStyleActivity extends AppCompatActivity { return; } - // Add a fill layer mapboxMap.addLayer(new FillLayer(AMSTERDAM_PARKS_LAYER, source.getId()) .withProperties( @@ -375,21 +467,4 @@ public class DataDrivenStyleActivity extends AppCompatActivity { ) ); } - - private String readRawResource(@RawRes int rawResource) throws IOException { - InputStream is = getResources().openRawResource(rawResource); - Writer writer = new StringWriter(); - char[] buffer = new char[1024]; - try { - Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); - int numRead; - while ((numRead = reader.read(buffer)) != -1) { - writer.write(buffer, 0, numRead); - } - } finally { - is.close(); - } - - return writer.toString(); - } } |