我正在使用Google Maps API V2,并想知道如何区分用户与地图交互以移动或缩放相机,以及调用animateCamera方法的情况。我想要做的是让地图在用户中心跟随他们,直到他们缩放或拖动地图,此时我想给用户完全控制。我的问题是onCameraChange在用户移动地图和地图动画时都被调用。我该怎么解决这个问题?
这里描述了一个来自GoogleMap.OnCameraMoveStartedListener的不错的回调函数,详情请参见此处
重点是:
@Override
public void onCameraMoveStarted(int reason) {
if (reason == OnCameraMoveStartedListener.REASON_GESTURE) {
Toast.makeText(this, "The user gestured on the map.",
Toast.LENGTH_SHORT).show();
} else if (reason == OnCameraMoveStartedListener
.REASON_API_ANIMATION) {
Toast.makeText(this, "The user tapped something on the map.",
Toast.LENGTH_SHORT).show();
} else if (reason == OnCameraMoveStartedListener
.REASON_DEVELOPER_ANIMATION) {
Toast.makeText(this, "The app moved the camera.",
Toast.LENGTH_SHORT).show();
}
}
当您正在对地图进行动画处理时,传递的CancelableCallback
允许您检测以下情况:
stopAnimation
)。正如您所知:
在执行动画时,您应该在活动/片段中具有足够的状态信息,以便决定用户是否与地图进行了交互。此时,您可以决定不再对地图进行动画处理(通过避免后续调用animateCamera)。