当用户在我的应用程序中平移地图时,我需要执行一些代码,包括平移开始,拖动和结束时。
我已经看过GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE
(link)了,但是REASON_GESTURE
不仅适用于平移,而且适用于缩放和旋转,并且我不想在其中执行代码两种情况。
是否有办法进一步缩小只能平移的原因?如果不是,您是否知道有什么变通办法可以仅在地图内侦听平移,并具有不同的平移开始,拖动和结束代码?
googleMap.setOnCameraMoveStartedListener(new GoogleMap.OnCameraMoveStartedListener() {
@Override
public void onCameraMoveStarted(int reason) {
if (reason == GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE) {
//map is touched..do something
}
}
});
答案 0 :(得分:0)
您可以在每个触发器上保留CameraPosition
。然后使用比较来决定是否执行代码。
googleMap.setOnCameraMoveStartedListener(new GoogleMap.OnCameraMoveStartedListener() {
@Override
public void onCameraMoveStarted(int reason) {
CameraPosition newPosition = googleMap.getCameraPosition();
if (reason == GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE
&& oldPosition != null
&& oldPosition.tilt == newPosition.tilt
&& oldPosition.zoom == newPosition.zoom
&& oldPosition.bearing == newPosition.bearing) {
// map is panned..do something
}
oldPosition = newPosition;
}
});