为什么沾不上的谷歌地图V2工作? [英] Why Touch not work on google map 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屋!