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

Detect when map camera begins moving

当用户输入不是 发起更改时,是否有任何方法可以检测 GoogleMaps 地图何时开始移动/开始相机更改?

我知道我可以在用户手动移动触摸事件时利用触摸事件,但我找不到在何处利用以编程方式触发的任何事件。

所以如果我这样调用

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

我看到引发的唯一事件是 CameraChange,它仅在更改完成后发生。

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

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

我不确定它是否有效。但是如果地图仍然在同一位置居中,也许您可​​以使用处理程序每​​ 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() 上取消它。