为什么沾不上的谷歌地图V2工作? [英] Why Touch not work on google map v2?

查看:154
本文介绍了为什么沾不上的谷歌地图V2工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的工作护目镜地图V2,但我需要做的在地图上的一些触摸的东西,但无法得到护目镜地图v2.I正在膨胀的XML包含的XML片段触摸监听我的code是为: -

I am working on goggle map v2 but My need to do some stuff on map touch but unable to get touch listener of goggle map v2.I am inflating XML which contain fragment xml my code is as:-

  public class MapViewHelper {

    private FragmentActivity objactivity;
    public GoogleMap myMap=null;


    public MapViewHelper(FragmentActivity objactivity) {
        this.objactivity = objactivity;
    }

    /*
     * @return view of map
     * 
     * @author Sandeep Tiwari
     */
    public View getMapView() {
        View objView = View.inflate(objactivity, R.layout.homemapview, null);
        return objView;
    }

    public GoogleMap getMap()
    {
        if (myMap == null) {
            // Try to obtain the map from the SupportMapFragment.
            myMap = ((SupportMapFragment)this.objactivity.getSupportFragmentManager().findFragmentById(R.id.map))
                    .getMap();
    }
        return myMap;
    }


       public class MySupportMapFragment extends SupportMapFragment {
        public View mOriginalContentView;
        public TouchableWrapper mTouchView;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup parent,
                Bundle savedInstanceState) {
            mOriginalContentView = super.onCreateView(inflater, parent,
                    savedInstanceState);
            mTouchView = new TouchableWrapper(getActivity());
            mTouchView.addView(mOriginalContentView);
            return mTouchView;
        }

        @Override
        public View getView() {
            return mOriginalContentView;
        }
    }

  public class TouchableWrapper extends FrameLayout {

    public TouchableWrapper(Context context) {
        super(context);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
            ((MainActivity) objactivity).MotionDown(ev);
            break;

            case MotionEvent.ACTION_POINTER_DOWN:
                ((MainActivity) objactivity).MotionPointerDown(ev);
                break;

            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_POINTER_UP:
                ((MainActivity)objactivity).MotionUp(ev);
                break;

            case MotionEvent.ACTION_MOVE:
                ((MainActivity)objactivity).ActionMove(ev);
                break;

            }
            return super.dispatchTouchEvent(ev);
        }
    }
}

这是在我的xml夸大我的Java类: -

This is My java class in which I am inflating xml:-

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

     <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment"
        />

</RelativeLayout>

但是当我触摸地图zoomin缩小地图不采取行动履行任何一个指导我。
先谢谢了。

but When I touch map zoomin zoom out map no action perform any one guide me. thanks in advance.

推荐答案

我改变我的XML为: -

I change My xml as:-

 <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.fd.viewhelper.MapViewHelper"
        />

下面com.fd.viewhelper.MapViewHelper,是延伸SupportMapFragment并覆盖其方法,在这里运行的类code类的名字: -

Here com.fd.viewhelper.MapViewHelper, is class name which extends SupportMapFragment and override its method,here running code of that class:-

package com.fd.viewhelper;


public class MapViewHelper extends SupportMapFragment {

    private FragmentActivity objactivity;
    public GoogleMap myMap = null;
    private FlashDeaOverlay itemizedoverlay;
    private List<GroupDealModle> objgroupdeallist;
    private ArrayList<FlashDeaOverlay> objflashdealoverlay = new ArrayList<FlashDeaOverlay>();
    private Bitmap objbitmap;
    private double lat = 0, lng = 0;
    private Context objcontext;

    public MapViewHelper()
    {
    }
    public MapViewHelper(FragmentActivity objactivity) {
        this.objactivity = objactivity;
    }

    /*
     * @return view of map
     * 
     * @author Sandeep Tiwari
     */
    public View getMapView() {
        View objView = View.inflate(objactivity, R.layout.homemapview, null);
        return objView;
    }

    public GoogleMap InstantiateMapView() {
        if (myMap == null) {
            // Try to obtain the map from the SupportMapFragment.
            myMap = ((SupportMapFragment) this.objactivity
                    .getSupportFragmentManager().findFragmentById(R.id.map))
                    .getMap();
        }
        return myMap;
    }



    public View mOriginalContentView;
    public TouchableWrapper mTouchView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent,
            Bundle savedInstanceState) {
        mOriginalContentView = super.onCreateView(inflater, parent,
                savedInstanceState);
        mTouchView = new TouchableWrapper(getActivity());
        mTouchView.addView(mOriginalContentView);
        return mTouchView;
    }

    @Override
    public View getView() {
        return mOriginalContentView;
    }

    public class TouchableWrapper extends FrameLayout {

        public TouchableWrapper(Context context) {
            super(context);
            objcontext = context;
        }

        @Override
        public boolean dispatchTouchEvent(MotionEvent ev) {
            switch (ev.getAction()) {
            case MotionEvent.ACTION_DOWN:
                ((MainActivity) objcontext).MotionDown(ev);
                break;

            case MotionEvent.ACTION_POINTER_DOWN:
                ((MainActivity) objcontext).MotionPointerDown(ev);
                break;

            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_POINTER_UP:
                ((MainActivity) objcontext).MotionUp(ev);
                break;

            case MotionEvent.ACTION_MOVE:
                ((MainActivity) objcontext).ActionMove(ev);
                break;

            }
            return super.dispatchTouchEvent(ev);
        }
    }

    // Map Activity must implement this interface
    public interface UpdateMapAfterUserInterection {
        public void onUpdateMapAfterUserInterection();
    }
}

这篇关于为什么沾不上的谷歌地图V2工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆