检测地图相机何时开始移动
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() 上取消它。
当用户输入不是 发起更改时,是否有任何方法可以检测 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() 上取消它。