强制animateCamera完成动画

时间:2016-04-14 16:59:09

标签: android google-maps

我试图强制相机动画到缩放级别和坐标,尽可能精确地描述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),则投影会更改缩放级别(在每种情况下都会过远,但是在该点旁边)并按预期进行居中。

尝试对此进行问题排查后,我注意到如果我为CancelableCallback方法实现animateCamera,我可以看到动画正在被取消。

有没有办法强制完成动画?如果没有,我怎样才能找到动画被取消的原因?

修改:可以在此问题中找到解决方案:Android- animateCamera with CameraUpdateFactory.newCameraPosition does NOT zoom

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

1 个答案:

答案 0 :(得分:0)

您可以尝试使用不同的方法来实施。

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

或者您可以在将CameraView传递给animateCamera之前先构建它。您可以查看文档here

不确定为什么或如何驱逐onCancel()。也许在你的animateCamera电话之后会发生一些事情。尝试使用duration参数来更改动画的速度并检查更改。