summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2017-01-05 00:14:35 +0100
committerGitHub <noreply@github.com>2017-01-05 00:14:35 +0100
commitcf859d6d0b782b03f7cda175757daed08731b440 (patch)
treeda99364b253f4d4c9c84345e4cd014e3eb5440ad /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java
parentb515762528ce1b14b23fc7c445dc9c8702ac6600 (diff)
downloadqtlocation-mapboxgl-cf859d6d0b782b03f7cda175757daed08731b440.tar.gz
[android] - move snapshot t NativeMapView (#7463)
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java')
-rwxr-xr-xplatform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java53
1 files changed, 46 insertions, 7 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java
index 95c0ae5327..8300e8024b 100755
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java
@@ -3,6 +3,7 @@ package com.mapbox.mapboxsdk.maps;
import android.app.ActivityManager;
import android.content.Context;
import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
import android.graphics.PointF;
import android.graphics.RectF;
import android.os.Build;
@@ -50,6 +51,9 @@ final class NativeMapView {
// Listeners for Map change events
private CopyOnWriteArrayList<MapView.OnMapChangedListener> onMapChangedListeners;
+ // Listener invoked to return a bitmap of the map
+ private SnapshotRequest snapshotRequest;
+
//
// Static methods
//
@@ -603,7 +607,11 @@ final class NativeMapView {
}
protected void onMapChanged(int rawChange) {
- mapView.onMapChanged(rawChange);
+ if (onMapChangedListeners != null) {
+ for (MapView.OnMapChangedListener onMapChangedListener : onMapChangedListeners) {
+ onMapChangedListener.onMapChanged(rawChange);
+ }
+ }
}
protected void onFpsChanged(double fps) {
@@ -611,7 +619,18 @@ final class NativeMapView {
}
protected void onSnapshotReady(byte[] bytes) {
- mapView.onSnapshotReady(bytes);
+ if (snapshotRequest != null && bytes != null) {
+ BitmapFactory.Options options = new BitmapFactory.Options();
+ options.inBitmap = snapshotRequest.getBitmap(); // the old Bitmap to be reused
+ options.inMutable = true;
+ options.inSampleSize = 1;
+ Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options);
+
+ MapboxMap.SnapshotReadyCallback callback = snapshotRequest.getCallback();
+ if (callback != null) {
+ callback.onSnapshotReady(bitmap);
+ }
+ }
}
//
@@ -833,11 +852,31 @@ final class NativeMapView {
onMapChangedListeners.remove(listener);
}
- void onMapChangedEventDispatch(int mapChange) {
- if (onMapChangedListeners != null) {
- for (MapView.OnMapChangedListener onMapChangedListener : onMapChangedListeners) {
- onMapChangedListener.onMapChanged(mapChange);
- }
+ //
+ // Snapshot
+ //
+
+ void addSnapshotCallback(@NonNull MapboxMap.SnapshotReadyCallback callback, @Nullable Bitmap bitmap) {
+ snapshotRequest = new SnapshotRequest(bitmap, callback);
+ scheduleTakeSnapshot();
+ render();
+ }
+
+ private static class SnapshotRequest {
+ private Bitmap bitmap;
+ private MapboxMap.SnapshotReadyCallback callback;
+
+ SnapshotRequest(Bitmap bitmap, MapboxMap.SnapshotReadyCallback callback) {
+ this.bitmap = bitmap;
+ this.callback = callback;
+ }
+
+ public Bitmap getBitmap() {
+ return bitmap;
+ }
+
+ public MapboxMap.SnapshotReadyCallback getCallback() {
+ return callback;
}
}
}