Ответ 1
Используйте android:clickable="false"
в вашем файле макета.
Как я могу отключить функции панорамирования/масштабирования MapView (а не элементы управления масштабированием, я хочу полностью статическую карту)?
Я также заметил, что прикосновение к карте, похоже, не вызывает MapView onClickListener, может ли кто-нибудь объяснить почему?
Используйте android:clickable="false"
в вашем файле макета.
Для версии 2 API Карт Google для Android это способ:
map.getUiSettings().setScrollGesturesEnabled(false);
Это работает, чтобы работать
mapView.getMap().getUiSettings().setAllGesturesEnabled(false);
Используйте Overlay, чтобы получить событие крана на карте
http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/Overlay.html
Я был один и тот же вопрос, и следующее решение является одним из лучших я мог бы найти и выполнил свои требования:
mapView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if(event.getPointerCount() > 1) {
return true;
}
return false;
}
});
Как писал Александр Штольц здесь:
Как отключить щепотку в Android MapView
И вот причина:
Это не отключить, нажав на MAPview полностью - это только захватывает и предотвращает жесты двумя пальцами (для масштабирования вам нужно два пальца) - нажатие на карте (например, на наложений) по-прежнему работает.
это правильный путь
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
{
switch (ev.getAction()&MotionEvent.ACTION_MASK)
{
case (MotionEvent.ACTION_DOWN):
{
// do what you want
// you may scroll map where you want
// don't use 'break', the same in case pointer events;
//break;
return true;
}
}
// 'super' go to the mapView procedures and scroll map in own algorithm
return super.dispatchTouchEvent(ev);
}
в вашем методе onMapReady, добавьте эти строки кода
gMap.getUiSettings().setZoomGesturesEnabled(false);
чтобы отключить все варианты
gMap.getUiSettings().setAllGesturesEnabled(false);
счастливое кодирование:)