diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterReuseActivity.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterReuseActivity.java | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterReuseActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterReuseActivity.java new file mode 100644 index 0000000000..ef5913beb0 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterReuseActivity.java @@ -0,0 +1,106 @@ +package com.mapbox.mapboxsdk.testapp.activity.snapshot; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.ImageView; + +import com.mapbox.mapboxsdk.camera.CameraPosition; +import com.mapbox.mapboxsdk.constants.Style; +import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.geometry.LatLngBounds; +import com.mapbox.mapboxsdk.snapshotter.MapSnapshot; +import com.mapbox.mapboxsdk.snapshotter.MapSnapshotter; +import com.mapbox.mapboxsdk.testapp.R; + +import java.util.Random; + +/** + * Test activity showing how to use a the {@link MapSnapshotter} + */ +public class MapSnapshotterReuseActivity extends AppCompatActivity implements MapSnapshotter.SnapshotReadyCallback { + + private MapSnapshotter mapSnapshotter; + private View fab; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_map_snapshotter_reuse); + + fab = findViewById(R.id.fab); + fab.setVisibility(View.INVISIBLE); + fab.setOnClickListener(v -> { + fab.setVisibility(View.INVISIBLE); + + mapSnapshotter.setStyleUrl(getRandomStyle()); + if (random.nextInt(2) == 0) { + mapSnapshotter.setCameraPosition(getRandomCameraPosition()); + } else { + mapSnapshotter.setRegion(getRandomBounds()); + } + if (random.nextInt(2) == 0) { + mapSnapshotter.setSize(512, 512); + } else { + mapSnapshotter.setSize(256, 256); + } + mapSnapshotter.start(MapSnapshotterReuseActivity.this); + }); + + mapSnapshotter = new MapSnapshotter( + getApplicationContext(), + new MapSnapshotter.Options(512, 512) + ); + + mapSnapshotter.start(MapSnapshotterReuseActivity.this); + } + + @Override + public void onSnapshotReady(MapSnapshot snapshot) { + fab.setVisibility(View.VISIBLE); + ImageView imageView = (ImageView) findViewById(R.id.snapshot_image); + imageView.setImageBitmap(snapshot.getBitmap()); + } + + private LatLngBounds getRandomBounds() { + return LatLngBounds.from( + randomInRange(-5, 5), + randomInRange(-5, 5), + randomInRange(5, 10), + randomInRange(5, 10) + ); + } + + private CameraPosition getRandomCameraPosition() { + return new CameraPosition.Builder() + .target(new LatLng(randomInRange(-80, 80), randomInRange(-160, 160))) + .zoom(randomInRange(2, 10)) + .bearing(randomInRange(0, 90)) + .build(); + } + + public String getRandomStyle() { + switch (random.nextInt(5)) { + case 0: + return Style.DARK; + case 1: + return Style.LIGHT; + case 2: + return Style.MAPBOX_STREETS; + case 3: + return Style.OUTDOORS; + case 4: + return Style.SATELLITE_STREETS; + default: + return Style.TRAFFIC_DAY; + } + } + + private static Random random = new Random(); + + public static float randomInRange(float min, float max) { + return (random.nextFloat() * (max - min)) + min; + } + +} |