Android谷歌地图v2相机动画

Aid*_*Fry 8 animation camera android google-maps-api-2

因此,我不确定这是否是一个错误...可能是或者我可能错过了一些东西.

无论如何,这里是谷歌地图V2相机控件的链接.https://developers.google.com/maps/documentation/android/views#moving_the_camera

问题 :

动画到已经动画化的位置不会调用onFinish();

如何复制:

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(mLocation.getLatLng(), zoomLevel), 200, new GoogleMap.CancelableCallback() {

                    @Override
                    public void onFinish() {
                        //DO some stuff here!
                    Log.d("animation", "onFinishCalled");

                    }

                    @Override
                    public void onCancel() {
                    Log.d("animation", "onCancel");


                    }
                }); 
Run Code Online (Sandbox Code Playgroud)

当用户双击一些调用相同动画的东西时即使间隔时间很长,也可能会出现这个问题,onFinish只会被调用成功动画.当相机已经定位时,将不会调用onFinish方法!

我可以在做任何相机动画之前去做检查,但我不喜欢那样浪费.

任何帮助,将不胜感激.谢谢.

小智 15

我有同样的问题,当我想将相机移动到相同的位置,这似乎是一个错误.即使旧的和新的位置不一样且差别很小,例如:old position.latitude = 94.54284009112,new position.latitude = 94.54284003451,它不起作用.我的解决方案是截断值只得到old_position.latitude = new_position.latitude = 94.54,然后我做一个测试.

移动相机并同时滚动地图还有另一个问题,因为我在移动之前禁用滚动手势并在onFinish()和onCancel()上启用它.

public void animateCameraTo(final double lat, final double lng)
{
    _googleMap = getMap();
    CameraPosition camPosition = _googleMap.getCameraPosition();
    if (!((Math.floor(camPosition.target.latitude * 100) / 100) == (Math.floor(lat * 100) / 100) && (Math.floor(camPosition.target.longitude * 100) / 100) == (Math.floor(lng * 100) / 100)))
    {
        _googleMap.getUiSettings().setScrollGesturesEnabled(false);
        _googleMap.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(lat, lng)), new CancelableCallback()
        {

            @Override
            public void onFinish()
            {
                _googleMap.getUiSettings().setScrollGesturesEnabled(true);

            }

            @Override
            public void onCancel()
            {
                _googleMap.getUiSettings().setAllGesturesEnabled(true);

            }
        });
    }

}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助你;)

  • 公平点,好的工作,我会下降到至少4小数点!lat长的2位小数仍是相当大的区域 (2认同)