繁体   English   中英

强制animateCamera完成动画

[英]Force animateCamera to complete animation

我正在尝试迫使相机动画化为缩放级别和坐标,以尽可能准确地描述由LatLng坐标列表占据的区域。

到目前为止,我有以下内容:

private void focusListOfCoords(Collection<LatLng> coords) {
  LatLngBounds.Builder coordsBoundsBuilder = new LatLngBounds.Builder();
  for (LatLng coord : coords) {
    coordsBoundsBuilder.include(coord);
  }
  LatLngBounds coordsBounds = coordsBoundsBuilder.build();
  CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(coordsBounds, 50);
  mMap.animateCamera(cameraUpdate);
}

上面的代码在整个世界上一望无际时,只是将视图稍微平移到以边界的中心点为中心。 它不会放大。

如果我将mMap.animateCamera(cameraUpdate)替换为mMap.moveCamera(cameraUpdate) ,则投影会更改缩放级别(在每种情况下都太远了,但是在该点附近)并按预期居中。

在尝试解决此问题之后,我注意到如果为animateCamera方法实现CancelableCallback ,则可以看到动画已被取消。

有没有办法强迫动画完成? 如果不是,我如何找出动画被取消的原因?

编辑 :可以在以下问题中找到解决方案: 具有CameraUpdateFactory.newCameraPosition的Android- animateCamera无法缩放

总而言之,我正在调用动画的侦听器方法返回false,这取消了动画。

您可以尝试使用其他方法来实施。

一种是将CameraUpdateFactory.newLatLngZoom(latlng, zoom)传递给animateCamera 您可以使用此指定缩放级别。 有关此的更多信息。

或者,您可以先构建CameraView然后再将其传递给animateCamera 您可以在此处查看文档。

不太确定为什么或如何触发onCancel onCancel() 也许您的animateCamera通话后立即触发了某些操作。 尝试使用duration参数来更改动画的速度并检查更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM