Google Maps区分用户移动和动画

And*_* T. 1 android google-maps google-play-services

我正在使用Google Maps API V2,我想知道是否有一种方法可以区分用户何时与地图交互以移动或缩放相机,以及何时调用animateCamera方法。

我想要做的是让用户将地图中心放在其上,直到他们放大或拖走地图为止,这时我想让用户完全控制。

我的问题是,当用户移动地图以及为地图设置动画时,都会调用onCameraChange。我该怎么解决?

Ana*_*zer 9

这里描述 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();
    }
}
Run Code Online (Sandbox Code Playgroud)


Mac*_*ski 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 move the map and re-enable when he press the my-location button