我正在使用Google Maps API V2,我想知道是否有办法区分用户与地图交互以移动或缩放相机,以及何时调用animateCamera方法。
我想要做的是让用户跟随地图中心,直到他们放大或拖动地图,此时我想让用户完全控制。
我的问题是当用户移动地图时以及动画地图时都会调用onCameraChange。我该怎么做才能解决这个问题?
答案 0 :(得分:4)
要将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的最佳用户体验,我建议您遵循以下答案:Disable my-location when user moves the map and re-enable when he press the my-location button
答案 1 :(得分:4)
来自GoogleMap.OnCameraMoveStartedListener的一个很好的回调描述了here
点是:
@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();
}
}
答案 2 :(得分:0)
当您为地图制作动画时,您传入的CancelableCallback
可让您检测是否
stopAnimation
。)如你所知
您的活动/片段中应该有足够的状态信息,以确定用户在制作动画时与地图进行了互动。此时,您可以决定不再为地图设置动画。 (通过避免后续调用animateCamera。