6

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

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

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

4

2 回答 2

11

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

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
    }
}
于 2018-02-23T14:33:48.943 回答
5

我怀疑是否有一种简单、可靠和实时的方法可以做到这一点。IOW,我怀疑它会“脏”。

如果我必须尝试,我会提供自己的LocationSource,以便我知道地图何时会根据位置发生变化。然后,我会尝试忽略对 my 的下一个呼叫(呼叫?) ,因为这些呼叫OnCameraChangeListener与位置更改有关。

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

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

于 2013-06-17T11:15:30.820 回答