有什么方法可以检测GoogleMaps地图何时开始移动/当用户输入
更改时开始更换相机?我知道我可以在用户手动移动时触及触摸事件,但我无法找到以编程方式触发的任何事件的位置。
所以,如果我打电话给这样的话
_nativeMap.AnimateCamera(CameraUpdateFactory.NewLatLng(newCameraLocation), _animationDuration, null);
我看到的唯一事件是CameraChange
,只有在更改完成后才会发生。
我真的需要一些方法来检测它何时开始移动。
注意:这个例子是Xamarin / C#,但我并不关心。
答案 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()上取消它。