锁定MapView运动

时间:2012-12-04 21:08:21

标签: android google-maps android-mapview

我有一个MapView,它有一个叠加层,其中包含许多可以选择和拖动的绘图。

问题是当拖动一个对象时,MapView也会移动。

有没有办法可以锁定MapView?

我尝试过使用map.setClickable(false)

我也用过:

        map.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if(event.getAction() == MotionEvent.ACTION_MOVE) {
                    return true;
                }
                return false;
            }
        });

两次尝试都不会锁定移动,但会禁用选择叠加的功能。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:0)

在我的旧项目中,我设置MapView.clickable(false)并在MapView上添加布局。不确定这是最好的解决方案。

<强>更新

<RelativeLayout
            a:id="@+id/map_block"
            a:layout_width="fill_parent"
            a:layout_height="wrap_content"
            >
            <RelativeLayout
                a:id="@+id/map_holder"
                a:layout_width="fill_parent"
                a:layout_height="150dp"
                />

        <!-- Layout for catching clicks -->
            <TextView
                a:id="@+id/map_click_receiver"
                a:layout_width="fill_parent"
                a:layout_height="150dp"
                />
</RelativeLayout>

以编程方式MapView添加map_holder

mMapView = new MapView(mContext, getString(R.string.gmaps_key));
mapHolder.addView(mMapView, new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

哦,是的(但我认为mMapClickReceiver.setClickable(false)也可以帮助):

    mMapClickReceiver.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        // something to do
                    }
                });

答案 1 :(得分:0)

这对我有用:

map.setOnTouchListener(new OnTouchListener(){
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_MOVE) {
            return true;
        }
        return v.onTouchEvent(event);
     }

});