检测地图相机何时开始移动

时间:2016-03-08 16:03:20

标签: android android-maps-v2

有什么方法可以检测GoogleMaps地图何时开始移动/当用户输入

更改

时开始更换相机?

我知道我可以在用户手动移动时触及触摸事件,但我无法找到以编程方式触发的任何事件的位置。

所以,如果我打电话给这样的话

_nativeMap.AnimateCamera(CameraUpdateFactory.NewLatLng(newCameraLocation), _animationDuration, null);

我看到的唯一事件是CameraChange,只有在更改完成后才会发生。

我真的需要一些方法来检测它何时开始移动。

注意:这个例子是Xamarin / C#,但我并不关心。

1 个答案:

答案 0 :(得分:1)

我不确定它是否有效。但是,如果地图仍然居中于同一位置,也许您可​​以使用处理程序检查每个x秒。

让我们说你有

LatLng lastPosition;

使用这样的处理程序:

Handler h = new Handler();
int delay = REFRESH_RATE;

h.postDelayed(new Runnable(){
    public void run(){
        LatLng newPosition = mapView.getCameraPosition().target;
        double distance = computeDistance(newPosition, lastPosition);
        if(distance > THRESHOLD)
            //Camera moved.
        h.postDelayed(this, delay);
    }
}, delay);

现在您需要定义刷新率,以及确定您有移动的最小距离。你需要找到一种计算距离的方法,Location有一个内置方法......

您可以在animateCamera()之后使用此处理程序,并在Animation onFinish()上取消它。