summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java')
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java607
1 files changed, 0 insertions, 607 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java
deleted file mode 100644
index 09bb00b84d..0000000000
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java
+++ /dev/null
@@ -1,607 +0,0 @@
-package com.mapbox.mapboxsdk.testapp.activity.style;
-
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Handler;
-import android.support.v7.app.AppCompatActivity;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.Toast;
-import com.mapbox.geojson.Feature;
-import com.mapbox.geojson.FeatureCollection;
-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.Style;
-import com.mapbox.mapboxsdk.style.layers.CircleLayer;
-import com.mapbox.mapboxsdk.style.layers.FillLayer;
-import com.mapbox.mapboxsdk.style.layers.Layer;
-import com.mapbox.mapboxsdk.style.layers.LineLayer;
-import com.mapbox.mapboxsdk.style.layers.Property;
-import com.mapbox.mapboxsdk.style.layers.PropertyValue;
-import com.mapbox.mapboxsdk.style.layers.RasterLayer;
-import com.mapbox.mapboxsdk.style.layers.SymbolLayer;
-import com.mapbox.mapboxsdk.style.layers.TransitionOptions;
-import com.mapbox.mapboxsdk.style.sources.GeoJsonSource;
-import com.mapbox.mapboxsdk.style.sources.RasterSource;
-import com.mapbox.mapboxsdk.style.sources.Source;
-import com.mapbox.mapboxsdk.style.sources.TileSet;
-import com.mapbox.mapboxsdk.style.sources.VectorSource;
-import com.mapbox.mapboxsdk.testapp.R;
-import com.mapbox.mapboxsdk.testapp.utils.ResourceUtils;
-import timber.log.Timber;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import static com.mapbox.mapboxsdk.style.expressions.Expression.all;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.color;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.eq;
-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.gte;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.interpolate;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.literal;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.lt;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.stop;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.toNumber;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.zoom;
-import static com.mapbox.mapboxsdk.style.layers.Property.FILL_TRANSLATE_ANCHOR_MAP;
-import static com.mapbox.mapboxsdk.style.layers.Property.NONE;
-import static com.mapbox.mapboxsdk.style.layers.Property.SYMBOL_PLACEMENT_POINT;
-import static com.mapbox.mapboxsdk.style.layers.Property.VISIBLE;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.backgroundOpacity;
-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;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.fillOutlineColor;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.fillTranslateAnchor;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.lineCap;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.lineColor;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.lineJoin;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.lineOpacity;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.lineWidth;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.symbolPlacement;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.visibility;
-
-/**
- * Test activity showcasing the runtime style API.
- */
-public class RuntimeStyleActivity extends AppCompatActivity {
-
- private MapView mapView;
- private MapboxMap mapboxMap;
- private boolean styleLoaded;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_runtime_style);
-
- // Initialize map as normal
- mapView = findViewById(R.id.mapView);
- mapView.onCreate(savedInstanceState);
-
- mapView.getMapAsync(map -> {
- // Store for later
- mapboxMap = map;
-
- // Center and Zoom (Amsterdam, zoomed to streets)
- mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(52.379189, 4.899431), 14));
-
- mapboxMap.setStyle(
- new Style.Builder()
- .fromUri(Style.MAPBOX_STREETS)
- // set custom transition
- .withTransition(new TransitionOptions(250, 50)), style -> styleLoaded = true
- );
- });
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.menu_runtime_style, menu);
- return true;
- }
-
- @Override
- protected void onStart() {
- super.onStart();
- mapView.onStart();
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- mapView.onResume();
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- mapView.onPause();
- }
-
- @Override
- protected void onStop() {
- super.onStop();
- mapView.onStop();
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- mapView.onSaveInstanceState(outState);
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- mapView.onDestroy();
- }
-
- @Override
- public void onLowMemory() {
- super.onLowMemory();
- mapView.onLowMemory();
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (!styleLoaded) {
- return false;
- }
-
- switch (item.getItemId()) {
- case R.id.action_list_layers:
- listLayers();
- return true;
- case R.id.action_list_sources:
- listSources();
- return true;
- case R.id.action_water_color:
- setWaterColor();
- return true;
- case R.id.action_background_opacity:
- setBackgroundOpacity();
- return true;
- case R.id.action_road_avoid_edges:
- setRoadSymbolPlacement();
- return true;
- case R.id.action_layer_visibility:
- setLayerInvisible();
- return true;
- case R.id.action_remove_layer:
- removeBuildings();
- return true;
- case R.id.action_add_parks_layer:
- addParksLayer();
- return true;
- case R.id.action_add_dynamic_parks_layer:
- addDynamicParksLayer();
- return true;
- case R.id.action_add_terrain_layer:
- addTerrainLayer();
- return true;
- case R.id.action_add_satellite_layer:
- addSatelliteLayer();
- return true;
- case R.id.action_update_water_color_on_zoom:
- updateWaterColorOnZoom();
- return true;
- case R.id.action_add_custom_tiles:
- addCustomTileSource();
- return true;
- case R.id.action_fill_filter:
- styleFillFilterLayer();
- return true;
- case R.id.action_line_filter:
- styleLineFilterLayer();
- return true;
- case R.id.action_numeric_filter:
- styleNumericFillLayer();
- return true;
- case R.id.action_bring_water_to_front:
- bringWaterToFront();
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
-
- private void listLayers() {
- List<Layer> layers = mapboxMap.getStyle().getLayers();
- StringBuilder builder = new StringBuilder("Layers:");
- for (Layer layer : layers) {
- builder.append("\n");
- builder.append(layer.getId());
- }
- Toast.makeText(this, builder.toString(), Toast.LENGTH_LONG).show();
- }
-
- private void listSources() {
- List<Source> sources = mapboxMap.getStyle().getSources();
- StringBuilder builder = new StringBuilder("Sources:");
- for (Source source : sources) {
- builder.append("\n");
- builder.append(source.getId());
- }
- Toast.makeText(this, builder.toString(), Toast.LENGTH_LONG).show();
- }
-
- private void setLayerInvisible() {
- String[] roadLayers = new String[] {"water"};
- for (String roadLayer : roadLayers) {
- Layer layer = mapboxMap.getStyle().getLayer(roadLayer);
- if (layer != null) {
- layer.setProperties(visibility(NONE));
- }
- }
- }
-
- private void setRoadSymbolPlacement() {
- // Zoom so that the labels are visible first
- mapboxMap.animateCamera(CameraUpdateFactory.zoomTo(14), new DefaultCallback() {
- @Override
- public void onFinish() {
- String[] roadLayers = new String[] {"road-label-small", "road-label-medium", "road-label-large"};
- for (String roadLayer : roadLayers) {
- Layer layer = mapboxMap.getStyle().getLayer(roadLayer);
- if (layer != null) {
- layer.setProperties(symbolPlacement(SYMBOL_PLACEMENT_POINT));
- }
- }
- }
- });
- }
-
- private void setBackgroundOpacity() {
- Layer background = mapboxMap.getStyle().getLayer("background");
- if (background != null) {
- background.setProperties(backgroundOpacity(0.2f));
- }
- }
-
- private void setWaterColor() {
- FillLayer water = mapboxMap.getStyle().getLayerAs("water");
- if (water != null) {
- water.setFillColorTransition(new TransitionOptions(7500, 1000));
- water.setProperties(
- visibility(VISIBLE),
- fillColor(Color.RED)
- );
- } else {
- Toast.makeText(RuntimeStyleActivity.this, "No water layer in this style", Toast.LENGTH_SHORT).show();
- }
- }
-
- private void removeBuildings() {
- // Zoom to see buildings first
- mapboxMap.getStyle().removeLayer("building");
- }
-
- private void addParksLayer() {
- // Add a source
- Source source;
- try {
- source = new GeoJsonSource("amsterdam-spots", ResourceUtils.readRawResource(this, R.raw.amsterdam));
- } catch (IOException ioException) {
- Toast.makeText(
- RuntimeStyleActivity.this,
- "Couldn't add source: " + ioException.getMessage(),
- Toast.LENGTH_SHORT).show();
- return;
- }
-
- mapboxMap.getStyle().addSource(source);
-
- FillLayer layer = new FillLayer("parksLayer", "amsterdam-spots");
- layer.setProperties(
- fillColor(Color.RED),
- fillOutlineColor(Color.BLUE),
- fillOpacity(0.3f),
- fillAntialias(true)
- );
-
- // Only show me parks (except westerpark with stroke-width == 3)
- layer.setFilter(all(eq(get("type"), literal("park")), eq(get("stroke-width"), literal(3))));
-
- mapboxMap.getStyle().addLayerBelow(layer, "building");
- // layer.setPaintProperty(fillColor(Color.RED)); // XXX But not after the object is attached
-
- // Or get the object later and set it. It's all good.
- mapboxMap.getStyle().getLayer("parksLayer").setProperties(fillColor(Color.RED));
-
- // You can get a typed layer, if you're sure it's of that type. Use with care
- layer = mapboxMap.getStyle().getLayerAs("parksLayer");
- // And get some properties
- PropertyValue<Boolean> fillAntialias = layer.getFillAntialias();
- Timber.d("Fill anti alias: %s", fillAntialias.getValue());
- layer.setProperties(fillTranslateAnchor(FILL_TRANSLATE_ANCHOR_MAP));
- PropertyValue<String> fillTranslateAnchor = layer.getFillTranslateAnchor();
- Timber.d("Fill translate anchor: %s", fillTranslateAnchor.getValue());
- PropertyValue<String> visibility = layer.getVisibility();
- Timber.d("Visibility: %s", visibility.getValue());
-
- // Get a good look at it all
- mapboxMap.animateCamera(CameraUpdateFactory.zoomTo(12));
- }
-
- private void addDynamicParksLayer() {
- // Load some data
- FeatureCollection parks;
- try {
- String json = ResourceUtils.readRawResource(this, R.raw.amsterdam);
- parks = FeatureCollection.fromJson(json);
- } catch (IOException ioException) {
- Toast.makeText(
- RuntimeStyleActivity.this,
- "Couldn't add source: " + ioException.getMessage(),
- Toast.LENGTH_SHORT
- ).show();
- return;
- }
-
- // Add an empty source
- mapboxMap.getStyle().addSource(new GeoJsonSource("dynamic-park-source"));
-
- FillLayer layer = new FillLayer("dynamic-parks-layer", "dynamic-park-source");
- layer.setProperties(
- fillColor(Color.GREEN),
- fillOutlineColor(Color.GREEN),
- fillOpacity(0.8f),
- fillAntialias(true)
- );
-
- // Only show me parks
- layer.setFilter(all(eq(get("type"), literal("park"))));
-
- mapboxMap.getStyle().addLayer(layer);
-
- // Get a good look at it all
- mapboxMap.animateCamera(CameraUpdateFactory.zoomTo(12));
-
- // Animate the parks source
- animateParksSource(parks, 0);
- }
-
- private void animateParksSource(final FeatureCollection parks, final int counter) {
- Handler handler = new Handler(getMainLooper());
- handler.postDelayed(() -> {
- if (mapboxMap == null) {
- return;
- }
-
- Timber.d("Updating parks source");
- // change the source
- int park = counter < parks.features().size() - 1 ? counter : 0;
-
- GeoJsonSource source = mapboxMap.getStyle().getSourceAs("dynamic-park-source");
-
- if (source == null) {
- Timber.e("Source not found");
- Toast.makeText(RuntimeStyleActivity.this, "Source not found", Toast.LENGTH_SHORT).show();
- return;
- }
-
- List<Feature> features = new ArrayList<>();
- features.add(parks.features().get(park));
- source.setGeoJson(FeatureCollection.fromFeatures(features));
-
- // Re-post
- animateParksSource(parks, park + 1);
- }, counter == 0 ? 100 : 1000);
- }
-
- private void addTerrainLayer() {
- // Add a source
- Source source = new VectorSource("my-terrain-source", "mapbox://mapbox.mapbox-terrain-v2");
- mapboxMap.getStyle().addSource(source);
-
- LineLayer layer = new LineLayer("terrainLayer", "my-terrain-source");
- layer.setSourceLayer("contour");
- layer.setProperties(
- lineJoin(Property.LINE_JOIN_ROUND),
- lineCap(Property.LINE_CAP_ROUND),
- lineColor(Color.RED),
- lineWidth(20f)
- );
-
- // adding layers below "road" layers
- List<Layer> layers = mapboxMap.getStyle().getLayers();
- Layer latestLayer = null;
- Collections.reverse(layers);
- for (Layer currentLayer : layers) {
- if (currentLayer instanceof FillLayer && ((FillLayer) currentLayer).getSourceLayer().equals("road")) {
- latestLayer = currentLayer;
- } else if (currentLayer instanceof CircleLayer && ((CircleLayer) currentLayer).getSourceLayer().equals("road")) {
- latestLayer = currentLayer;
- } else if (currentLayer instanceof SymbolLayer && ((SymbolLayer) currentLayer).getSourceLayer().equals("road")) {
- latestLayer = currentLayer;
- } else if (currentLayer instanceof LineLayer && ((LineLayer) currentLayer).getSourceLayer().equals("road")) {
- latestLayer = currentLayer;
- }
- }
-
- if (latestLayer != null) {
- mapboxMap.getStyle().addLayerBelow(layer, latestLayer.getId());
- }
-
- // Need to get a fresh handle
- layer = mapboxMap.getStyle().getLayerAs("terrainLayer");
-
- // Make sure it's also applied after the fact
- layer.setMinZoom(10);
- layer.setMaxZoom(15);
-
- layer = (LineLayer) mapboxMap.getStyle().getLayer("terrainLayer");
- Toast.makeText(this, String.format(
- "Set min/max zoom to %s - %s", layer.getMinZoom(), layer.getMaxZoom()), Toast.LENGTH_SHORT).show();
- }
-
- private void addSatelliteLayer() {
- // Add a source
- Source source = new RasterSource("my-raster-source", "mapbox://mapbox.satellite", 512);
- mapboxMap.getStyle().addSource(source);
-
- // Add a layer
- mapboxMap.getStyle().addLayer(new RasterLayer("satellite-layer", "my-raster-source"));
- }
-
- private void updateWaterColorOnZoom() {
- FillLayer layer = mapboxMap.getStyle().getLayerAs("water");
- if (layer == null) {
- return;
- }
-
- // Set a zoom function to update the color of the water
- layer.setProperties(
- fillColor(
- interpolate(
- exponential(0.8f),
- zoom(),
- stop(1, color(Color.GREEN)),
- stop(4, color(Color.BLUE)),
- stop(12, color(Color.RED)),
- stop(20, color(Color.BLACK))
- )
- )
- );
-
- // do some animations to show it off properly
- mapboxMap.animateCamera(CameraUpdateFactory.zoomTo(1), 1500);
- }
-
- private void addCustomTileSource() {
- // Add a source
- TileSet tileSet = new TileSet("2.1.0", "https://d25uarhxywzl1j.cloudfront.net/v0.1/{z}/{x}/{y}.mvt");
- tileSet.setMinZoom(0);
- tileSet.setMaxZoom(14);
- Source source = new VectorSource("custom-tile-source", tileSet);
- mapboxMap.getStyle().addSource(source);
-
- // Add a layer
- LineLayer lineLayer = new LineLayer("custom-tile-layers", "custom-tile-source");
- lineLayer.setSourceLayer("mapillary-sequences");
- lineLayer.setProperties(
- lineCap(Property.LINE_CAP_ROUND),
- lineJoin(Property.LINE_JOIN_ROUND),
- lineOpacity(0.6f),
- lineWidth(2.0f),
- lineColor(Color.GREEN)
- );
- mapboxMap.getStyle().addLayer(lineLayer);
- }
-
- private void styleFillFilterLayer() {
- mapboxMap.setStyle(new Style.Builder().fromUri("asset://fill_filter_style.json"));
- mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(31, -100), 3));
-
- Handler handler = new Handler(getMainLooper());
- handler.postDelayed(() -> {
- if (mapboxMap == null) {
- return;
- }
-
- Timber.d("Styling filtered fill layer");
-
- FillLayer states = (FillLayer) mapboxMap.getStyle().getLayer("states");
-
- if (states != null) {
- states.setFilter(eq(get("name"), literal("Texas")));
- states.setFillOpacityTransition(new TransitionOptions(2500, 0));
- states.setFillColorTransition(new TransitionOptions(2500, 0));
- states.setProperties(
- fillColor(Color.RED),
- fillOpacity(0.25f)
- );
- } else {
- Toast.makeText(RuntimeStyleActivity.this, "No states layer in this style", Toast.LENGTH_SHORT).show();
- }
- }, 2000);
- }
-
- private void styleLineFilterLayer() {
- mapboxMap.setStyle(new Style.Builder().fromUri("asset://line_filter_style.json"));
- mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(40, -97), 5));
-
- Handler handler = new Handler(getMainLooper());
- handler.postDelayed(() -> {
- if (mapboxMap == null) {
- return;
- }
-
- Timber.d("Styling filtered line layer");
-
- LineLayer counties = (LineLayer) mapboxMap.getStyle().getLayer("counties");
-
- if (counties != null) {
- counties.setFilter(eq(get("NAME10"), "Washington"));
-
- counties.setProperties(
- lineColor(Color.RED),
- lineOpacity(0.75f),
- lineWidth(5f)
- );
- } else {
- Toast.makeText(RuntimeStyleActivity.this, "No counties layer in this style", Toast.LENGTH_SHORT).show();
- }
- }, 2000);
- }
-
- private void styleNumericFillLayer() {
- mapboxMap.setStyle(new Style.Builder().fromUri("asset://numeric_filter_style.json"));
- mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(40, -97), 5));
-
- Handler handler = new Handler(getMainLooper());
- handler.postDelayed(() -> {
- if (mapboxMap == null) {
- return;
- }
-
- Timber.d("Styling numeric fill layer");
-
- FillLayer regions = (FillLayer) mapboxMap.getStyle().getLayer("regions");
-
- if (regions != null) {
- regions.setFilter(all(
- gte(toNumber(get("HRRNUM")), literal(200)),
- lt(toNumber(get("HRRNUM")), literal(300)))
- );
-
- regions.setProperties(
- fillColor(Color.BLUE),
- fillOpacity(0.5f)
- );
- } else {
- Toast.makeText(RuntimeStyleActivity.this, "No regions layer in this style", Toast.LENGTH_SHORT).show();
- }
- }, 2000);
- }
-
- private void bringWaterToFront() {
- Layer water = mapboxMap.getStyle().getLayer("water");
- if (water != null) {
- mapboxMap.getStyle().removeLayer(water);
- mapboxMap.getStyle().addLayerAt(water, mapboxMap.getStyle().getLayers().size() - 1);
- } else {
- Toast.makeText(this, "No water layer in this style", Toast.LENGTH_SHORT).show();
- }
- }
-
- private static class DefaultCallback implements MapboxMap.CancelableCallback {
-
- @Override
- public void onCancel() {
- // noop
- }
-
- @Override
- public void onFinish() {
- // noop
- }
- }
-}