GoogleMap.CancelableCallback() onFinish() 在动画结束前被调用
GoogleMap.CancelableCallback() onFinish() is called before the animation finish
我在 Android 中有一个 google 地图屏幕。我想移动和缩放相机到一个位置,并在动画完成后获取边界和缩放级别。
这就是我的
val location = LatLng(33.7701, -118.1937)
val DEFAULT_ZOOM_LEVEL = 13F
googleMap.animateCamera(
CameraUpdateFactory.newLatLngZoom(location, DEFAULT_ZOOM_LEVEL),
object: GoogleMap.CancelableCallback{
override fun onFinish() {
val visibleRegion = googleMap.projection.visibleRegion
Timber.i("zoom level is ${googleMap.cameraPosition.zoom}")
}
override fun onCancel() {
Timber.i("Animate Camera Canceled")
}
}
)
}
大部分时间都运行良好。 onFinish() 原木缩放级别为 13.0
但偶尔,onFinish() 木材日志缩放级别为 2.0
这意味着动画还没有完成,地图还没有放大。
我尝试了 的建议
但是,设置durationMs参数只会减慢动画速度,并不能确保在动画完成后调用onFinish()。
为什么会这样?这是 google 地图 Android 中的错误吗?
我正在使用 com.google.android.gms:play-services-maps:17.0.1
引用 https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap#animateCamera(com.google.android.gms.maps.CameraUpdate,%20com.google.android.gms.maps.GoogleMap.CancelableCallback)
无论如何你都可以使用解决方法:通过 moveCamera()
调用将相机移动到 onFinish()
中的目标位置,然后获取投影:
...
override fun onFinish() {
googleMap.moveCamera(<YOUR_DESIRED_TARGET_POSITION_AND_ZOOM>)
val visibleRegion = googleMap.projection.visibleRegion
Timber.i("zoom level is ${googleMap.cameraPosition.zoom}")
}
...
我在 Android 中有一个 google 地图屏幕。我想移动和缩放相机到一个位置,并在动画完成后获取边界和缩放级别。
这就是我的
val location = LatLng(33.7701, -118.1937)
val DEFAULT_ZOOM_LEVEL = 13F
googleMap.animateCamera(
CameraUpdateFactory.newLatLngZoom(location, DEFAULT_ZOOM_LEVEL),
object: GoogleMap.CancelableCallback{
override fun onFinish() {
val visibleRegion = googleMap.projection.visibleRegion
Timber.i("zoom level is ${googleMap.cameraPosition.zoom}")
}
override fun onCancel() {
Timber.i("Animate Camera Canceled")
}
}
)
}
大部分时间都运行良好。 onFinish() 原木缩放级别为 13.0
但偶尔,onFinish() 木材日志缩放级别为 2.0 这意味着动画还没有完成,地图还没有放大。
我尝试了
为什么会这样?这是 google 地图 Android 中的错误吗?
我正在使用 com.google.android.gms:play-services-maps:17.0.1
引用 https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap#animateCamera(com.google.android.gms.maps.CameraUpdate,%20com.google.android.gms.maps.GoogleMap.CancelableCallback)
无论如何你都可以使用解决方法:通过 moveCamera()
调用将相机移动到 onFinish()
中的目标位置,然后获取投影:
...
override fun onFinish() {
googleMap.moveCamera(<YOUR_DESIRED_TARGET_POSITION_AND_ZOOM>)
val visibleRegion = googleMap.projection.visibleRegion
Timber.i("zoom level is ${googleMap.cameraPosition.zoom}")
}
...