禁用在mapview中移动

时间:2011-04-01 13:39:46

标签: android android-mapview

是否可以禁用在谷歌地图内移动?

9 个答案:

答案 0 :(得分:52)

即使有一个公认的答案,只是提供我的答案,因为它没有帮助我。 mapView.setClickable(false)不能一直工作,例如在scrollView中有mapView的情况。所以我在相同大小的mapView上方创建了一个视图对象。

处理覆盖视图的onTouchListener并将所有触摸事件传递给mapView的父级(在我的情况下为ScrollView),因此将所有触摸事件从mapView传递到scrollview。

实现的另一种方法是

mMap.getUiSettings().setAllGesturesEnabled(false);

答案 1 :(得分:11)

mMap.getUiSettings().setScrollGesturesEnabled(false);

这可以禁止在地图中移动

答案 2 :(得分:2)

你需要setClickable(false),但你也可能想要setFocusable(false)以防止MapView获得焦点。

当用户使用硬件导航按钮时可能会出现问题,因为如果MapView具有焦点,则上下左右按钮将滚动地图。

答案 3 :(得分:0)

如果您在应用中嵌入地图视图,我认为您可以使用静态地图来查看相同的内容。

答案 4 :(得分:0)

我创建了扩展MapView的customMapView 并覆盖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;
    }

}

答案 5 :(得分:0)

我们可以使用 GoogleMapOptions

停止用户与 MapView SupportMapFragment 的互动
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)
}

答案 6 :(得分:0)

不确定我是否想念我,但为我解决了这个问题的方法如下:)

map.HasZoomEnabled = false; map.HasScrollEnabled = false;

答案 7 :(得分:0)

只需做auto kv = clients.begin(); while (kv != clients.end()) { int elapsed_seconds = boost::chrono::duration_cast<boost::chrono::seconds> (timeNow - kv->second->lastUpdated).count(); if (elapsed_seconds >= ServerData::SessionTimeoutSeconds) { trash_bin.push_back(*kv); kv = clients.erase(kv); } else ++kv; }

答案 8 :(得分:-3)

也许这可能是一个解决方案:

mapView.setEnabled(假)