我是Android新手。我尝试查找有关如何禁用在Google地图上移动相机并更改其命运的信息。例如,当显示标记时,我将无法移动相机,而移动手势将变为其他选项。有什么解决办法吗?
答案 0 :(得分:1)
您可以:
1)禁用所有手势,例如对this的Vincent问题的回答:
mMap.getUiSettings().setAllGesturesEnabled(false);
2)为MapFragment
创建可触摸的包装,就像在this社区Wiki答案中一样:
public class TouchableWrapper extends FrameLayout { public TouchableWrapper(Context context) { super(context); } @Override public boolean dispatchTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: MainActivity.mMapIsTouched = true; break; case MotionEvent.ACTION_UP: MainActivity.mMapIsTouched = false; break; // ... and so on for all of the gestures your need } return super.dispatchTouchEvent(event); } }
例如,here可以找到“两指滚动手势”可触摸包装的示例:
public class TouchableWrapper extends FrameLayout { private LockableScrollView mLockableScroll; private GoogleMap mGoogleMap; public TouchableWrapper(Context context) { super(context); } public void setGoogleMapAndScroll(GoogleMap googleMap, LockableScrollView lockableScroll) { mGoogleMap = googleMap; mLockableScroll = lockableScroll; } @Override public boolean dispatchTouchEvent(MotionEvent event) { switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: mGoogleMap.getUiSettings().setScrollGesturesEnabled(false); // UPDATE: add below line to disable zoom gesture mGoogleMap.getUiSettings().setZoomGesturesEnabled(false); mLockableScroll.setScrollingEnabled(true); break; case MotionEvent.ACTION_POINTER_DOWN: mLockableScroll.setScrollingEnabled(false); mGoogleMap.getUiSettings().setScrollGesturesEnabled(true); // UPDATE: add below line to enable zoom gesture mGoogleMap.getUiSettings().setZoomGesturesEnabled(true); break; case MotionEvent.ACTION_POINTER_UP: // UPDATE: add below line to disable zoom gesture mGoogleMap.getUiSettings().setZoomGesturesEnabled(false); mGoogleMap.getUiSettings().setScrollGesturesEnabled(false); mLockableScroll.setScrollingEnabled(true); break; case MotionEvent.ACTION_UP: // UPDATE: add below line to disable zoom gesture mGoogleMap.getUiSettings().setZoomGesturesEnabled(false); mGoogleMap.getUiSettings().setScrollGesturesEnabled(false); mLockableScroll.setScrollingEnabled(true); break; } return super.dispatchTouchEvent(event); } }