This repository has been archived by the owner on Aug 8, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[android] test app - map snapshotter activity
- Loading branch information
1 parent
11422c3
commit 9e8310c
Showing
4 changed files
with
154 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
131 changes: 131 additions & 0 deletions
131
.../src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterActivity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
package com.mapbox.mapboxsdk.testapp.activity.snapshot; | ||
|
||
import android.graphics.Bitmap; | ||
import android.os.Bundle; | ||
import android.support.v7.app.AppCompatActivity; | ||
import android.view.ViewTreeObserver; | ||
import android.widget.GridLayout; | ||
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.maps.MapboxMap; | ||
import com.mapbox.mapboxsdk.snapshotter.MapSnapshotter; | ||
import com.mapbox.mapboxsdk.testapp.R; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
import java.util.Random; | ||
|
||
import timber.log.Timber; | ||
|
||
/** | ||
* Test activity showing how to use a the {@link com.mapbox.mapboxsdk.snapshotter.MapSnapshotter} | ||
*/ | ||
public class MapSnapshotterActivity extends AppCompatActivity { | ||
|
||
private GridLayout grid; | ||
private List<MapSnapshotter> snapshotters = new ArrayList<>(); | ||
|
||
|
||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
setContentView(R.layout.activity_map_snapshotter); | ||
|
||
// Find the grid view and start snapshotting as soon | ||
// as the view is measured | ||
grid = (GridLayout) findViewById(R.id.snapshot_grid); | ||
grid.getViewTreeObserver() | ||
.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { | ||
@Override | ||
public void onGlobalLayout() { | ||
//noinspection deprecation | ||
grid.getViewTreeObserver().removeGlobalOnLayoutListener(this); | ||
addSnapshots(); | ||
} | ||
}); | ||
} | ||
|
||
private void addSnapshots() { | ||
Timber.i("Creating snapshotters"); | ||
|
||
for (int row = 0; row < grid.getRowCount(); row++) { | ||
for (int column = 0; column < grid.getColumnCount(); column++) { | ||
startSnapShot(row, column); | ||
} | ||
} | ||
} | ||
|
||
private void startSnapShot(final int row, final int column) { | ||
|
||
// Define the dimensions | ||
MapSnapshotter.Options options = new MapSnapshotter.Options( | ||
grid.getMeasuredWidth() / grid.getColumnCount(), | ||
grid.getMeasuredHeight() / grid.getRowCount() | ||
) | ||
// Optionally the pixel ratio | ||
.withPixelRatio(1 + row) | ||
|
||
// Optionally the style | ||
.withStyle((column + row) % 2 == 0 ? Style.TRAFFIC_DAY : Style.DARK); | ||
|
||
// Optionally the visible region | ||
if (row % 2 == 0) { | ||
options.withRegion(new LatLngBounds.Builder() | ||
.include(new LatLng(randomInRange(-80, 80), randomInRange(-160, 160))) | ||
.include(new LatLng(randomInRange(-80, 80), randomInRange(-160, 160))) | ||
.build() | ||
); | ||
} | ||
|
||
// Optionally the camera options | ||
if (column % 2 == 0) { | ||
options.withCameraPosition(new CameraPosition.Builder() | ||
.target(options.getRegion() != null ? | ||
options.getRegion().getCenter() : | ||
new LatLng(randomInRange(-80, 80), randomInRange(-160, 160))) | ||
.bearing(randomInRange(0, 360)) | ||
.tilt(randomInRange(0, 60)) | ||
.zoom(randomInRange(0, 20)) | ||
.build() | ||
); | ||
} | ||
|
||
MapSnapshotter snapshotter = new MapSnapshotter(MapSnapshotterActivity.this, options); | ||
|
||
snapshotter.start(new MapboxMap.SnapshotReadyCallback() { | ||
@Override | ||
public void onSnapshotReady(Bitmap snapshot) { | ||
Timber.i("Got the snapshot"); | ||
ImageView imageView = new ImageView(MapSnapshotterActivity.this); | ||
imageView.setImageBitmap(snapshot); | ||
grid.addView( | ||
imageView, | ||
new GridLayout.LayoutParams(GridLayout.spec(row), GridLayout.spec(column)) | ||
); | ||
} | ||
}); | ||
snapshotters.add(snapshotter); | ||
} | ||
|
||
@Override | ||
public void onPause() { | ||
super.onPause(); | ||
|
||
// Make sure to stop the snapshotters on pause | ||
for (MapSnapshotter snapshotter : snapshotters) { | ||
snapshotter.cancel(); | ||
} | ||
snapshotters.clear(); | ||
} | ||
|
||
private static Random random = new Random(); | ||
|
||
public static float randomInRange(float min, float max) { | ||
return (random.nextFloat() * (max - min)) + min; | ||
} | ||
|
||
} |
14 changes: 14 additions & 0 deletions
14
platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_map_snapshotter.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
android:layout_width="match_parent" | ||
android:layout_height="match_parent"> | ||
|
||
<GridLayout | ||
android:id="@+id/snapshot_grid" | ||
android:layout_width="match_parent" | ||
android:layout_height="match_parent" | ||
android:columnCount="3" | ||
android:orientation="horizontal" | ||
android:rowCount="3"/> | ||
|
||
</RelativeLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters