Ответ 1
Я обнаружил, что setClickable (false);
Можно ли отключить перемещение внутри карты google?
Я обнаружил, что setClickable (false);
Несмотря на то, что есть принятый ответ, просто предоставление моего ответа, поскольку он мне не помог. mapView.setClickable(false) не работает все время, например, случаи, когда у вас есть mapView внутри scrollView. Поэтому я создал объект вида прямо над mapView того же размера.
Обработал onTouchListener для моего оверлейного представления и передал все события касания родительскому элементу mapView (ScrollView в моем случае), поэтому обходя все события касания от mapView до прокрутки.
Еще один способ добиться - сделать
mMap.getUiSettings().setAllGesturesEnabled(false);
mMap.getUiSettings().setScrollGesturesEnabled(false);
это может отключить перемещение на карте
Вы хотите установитьClickable (false), но вы также, вероятно, захотите установитьFocusable (false), чтобы предотвратить фокусировку MapView.
Это может быть проблемой, когда пользователь использует кнопки навигации аппаратного обеспечения, потому что если MapView имеет фокус, кнопки вверх-вниз-вправо-вправо прокручивают карту.
Если вы вставляете представление карты в свое приложение, я думаю, вы можете использовать статические карты для просмотра того же.
Я создал customMapView, который расширяет MapView и переопределить метод onInterceptTouchEvent.
public class customMapView extends MapView {
public customMapView(Context context) {
super(context);
}
public customMapView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
}
public customMapView(Context context, AttributeSet attributeSet, int i) {
super(context, attributeSet, i);
}
public customMapView(Context context, GoogleMapOptions googleMapOptions) {
super(context, googleMapOptions);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// return super.onInterceptTouchEvent(ev);
return true;
}
}
Мы можем остановить взаимодействие с пользователем MapView или SupportMapFragment, используя GoogleMapOptions
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val mapOptions = GoogleMapOptions()
mapOptions.rotateGesturesEnabled(false)
mapOptions.zoomGesturesEnabled(false)
mapOptions.tiltGesturesEnabled(false)
mapOptions.scrollGesturesEnabled(false)
// Map View
val mapView = MapView(context, mapOptions)
mapView.onCreate(savedInstanceState)
// Or
val mapView = MapView(context
mapView.getMapAsync { googleMap ->
googleMap.uiSettings.setAllGesturesEnabled(false)
}
// Or Map Fragment
val mapFragment = SupportMapFragment.newInstance(mapOptions)
}
Возможно, это может быть решение:
mapView.setEnabled(ложь)