我正在使用 Google Maps API V2,我想知道是否有办法区分用户何时与地图交互以移动或缩放相机,以及何时调用 animateCamera 方法。
我想要做的是让用户跟随他们的地图中心,直到他们放大或拖走地图,此时我想让用户完全控制。
我的问题是 onCameraChange 在用户移动地图和地图动画时都会被调用。我能做些什么来解决这个问题?
我正在使用 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();
}
}
要将 animateCamera 与其他动作区分开来,您可以在此处使用注释中的代码:http ://code.google.com/p/gmaps-api-issues/issues/detail?id=4636#c21
如果您使用右上角的 myLocation 按钮,这将不起作用,因为您无法将按下它(当您想要开始跟踪用户位置时)与其他用户操作区分开来。请参阅:http ://code.google.com/p/gmaps-api-issues/issues/detail?id=4789
为了获得 3.1.36 的最佳用户体验,我建议遵循以下答案:当用户移动地图时禁用我的位置并在按下我的位置按钮时重新启用
当您为地图制作动画时,CancelableCallback
您传入的参数允许您检测是否
stopAnimation
自己。)如你所知
您的活动/片段中应该有足够的状态信息来确定用户在执行动画时与地图进行了交互。此时,您可以决定不再为地图设置动画。(通过避免后续调用 animateCamera.