如何检测谷歌地图V2 for Android中的用户滚动事件

Bas*_*ali 5 events android scroll google-maps-android-api-2

我的应用程序有单独的算法来获取滚动更改和用户位置更改的数据.对于位置更改使用com.google.android.gms.location.LocationListener 哪个工作正常.

但对于用户滚动,我得到了 mMap.setOnCameraChangeListener(new OnCameraChangeListener().但问题是com.google.android.gms.location.LocationListene还会触发 mMap.setOnCameraChangeListener(new OnCameraChangeListener().

那么如何区分.目前我使用布尔值来区分,但它不可靠和肮脏.

the*_*jon 10

我遇到了同样的问题,正在尝试各种方法,例如包装视图以拦截触摸,或者包装任何调用以更改视口并监听它何时开始和停止更改以便我可以判断是否有其他东西改变了它,或者匹配当前视口到我上次设置的......这一切都相当繁琐。然后有人指给我 ,它看起来很有希望更新:现在已经为我们完美地工作了几个月没有任何问题

map.setOnCameraMoveStartedListener { reasonCode ->
    if (reasonCode == GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE) {
        // I will no longer keep updating the camera location because
        // the user interacted with it. This is my field I check before
        // snapping the camera location to the latest value.
        tracking = false
    }
}
Run Code Online (Sandbox Code Playgroud)


Com*_*are 5

我怀疑这是一种简单,可靠,实时的方法.IOW,我怀疑它会变得"脏".

如果我不得不尝试,我会提供自己的LocationSource,所以我知道地图何时根据位置改变.然后我会尝试忽略对我的下一个调用(调用?)OnCameraChangeListener,因为它与位置更改有关.

(顺便说一句,请注意,LocationListener已弃用)

或者,我会尝试更改我的数据获取算法,以平等对待所有相机更改.毕竟,如果我的目标是确保我有从目前的中心地图的各方面数据,不要紧如何我到该中心,只是,只要我在那里.