@@ -22,6 +22,7 @@ import androidx.annotation.IdRes
2222import androidx.annotation.Keep
2323import androidx.collection.LongSparseArray
2424import com.google.android.gms.dynamic.IObjectWrapper
25+ import com.google.android.gms.dynamic.ObjectWrapper
2526import com.google.android.gms.dynamic.unwrap
2627import com.google.android.gms.maps.GoogleMap.MAP_TYPE_TERRAIN
2728import com.google.android.gms.maps.GoogleMapOptions
@@ -588,10 +589,18 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions)
588589 }
589590
590591 override fun snapshot (callback : ISnapshotReadyCallback , bitmap : IObjectWrapper ? ) = afterInitialize {
591- Log .d(TAG , " snapshot" )
592- val hmsBitmap = bitmap.unwrap<Bitmap >() ? : return @afterInitialize
593- val hmsCallback = HuaweiMap .SnapshotReadyCallback { p0 -> callback.onBitmapReady(p0) }
594- it.snapshot(hmsCallback, hmsBitmap)
592+ Log .d(TAG , " taking snapshot now" )
593+ val hmsBitmap = bitmap.unwrap<Bitmap >()
594+ Log .d(TAG , " provided bitmap. $hmsBitmap " )
595+ val hmsCallback = HuaweiMap .SnapshotReadyCallback { result ->
596+ runOnMainLooper {
597+ Log .d(TAG , " take snapshot end. $result " )
598+ if (CreatorImpl .VERSION < SNAPSHOT_OLD_VERSION_CODE ) {
599+ callback.onBitmapReady(result)
600+ } else callback.onBitmapWrappedReady(ObjectWrapper .wrap(result))
601+ }
602+ }
603+ if (hmsBitmap != null ) it.snapshot(hmsCallback, hmsBitmap) else it.snapshot(hmsCallback)
595604 }
596605
597606 override fun snapshotForTest (callback : ISnapshotReadyCallback ) = afterInitialize {
@@ -984,6 +993,7 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions)
984993
985994 companion object {
986995 private const val TAG = " GmsGoogleMap"
996+ private const val SNAPSHOT_OLD_VERSION_CODE = 4000000
987997
988998 private const val TAG_LOGO = " fakeWatermark"
989999 private const val ON_MAP_CALLBACK_DELAY = 300L
0 commit comments