2016-04-14 48 views
0

我试图强制摄像机动画到缩放级别和坐标,尽可能精确地描述坐标列表所占用的区域。强制animateCamera完成动画

到目前为止,我有以下几点:

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,我可以看到动画被取消。

有没有办法强制动画完成?如果不是,我该如何追捕动画被取消的原因?

编辑:该解决方案可以在这个问题上找到:Android- animateCamera with CameraUpdateFactory.newCameraPosition does NOT zoom

总之,我的听众方法是调用动画是返回false其中取消了动画。

+0

[Android- animateCamera与CameraUpdateFactory.newCameraPosition不可缩放]可能的重复不会放大](http://stackoverflow.com/questions/32908913/android-animatecamera-with-cameraupdatefactory-newcameraposition-does-not-zoom) – nukeforum

回答

0

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

其中之一是通过CameraUpdateFactory.newLatLngZoom(latlng, zoom)animateCamera。您可以使用此指定缩放级别。更多关于那here的信息。

或者您可以在将它传递到animateCamera之前先制作您的CameraView。您可以查看文档here

不知道为什么或如何激怒onCancel()。也许有些东西在你的animateCamera电话后被解雇。尝试使用duration参数来更改动画的速度并检查更改。

+0

您的第二个推荐是我在我提供的代码片段中所做的。你的第一个建议是简单地内联工厂调用,不会改变动画的结果。我会尝试调整持续时间,看看是否有帮助。 – nukeforum

+0

我在另一个问题中找到了答案,谢谢你的帮助。 – nukeforum