我一直在浏览一系列关于ScrollView使用谷歌地图从MapView窃取触摸事件的问题的不同主题,我已经看到了几种关于如何覆盖onTouch事件的不同解决方案。我正在为我的应用程序使用ArcGIS地图,我尝试了几种谷歌地图解决方案,但没有任何工作。所以我想知道是否有人可以在ScrollView中使用ArcGIS mapview的解决方案覆盖onTouch事件,以便可以垂直和水平平移地图。
目前我只添加了几层图层的MapView,所以这是一个非常基本的设置,但如果发布一些代码将有助于我发布一些代码。
答案 0 :(得分:2)
提出了一个有效的解决方案。
我将监听器放在onCreate中进行活动。
MyTouchListener tl = new MyTouchListener(this, mMapView);
mMapView.setOnTouchListener(tl);
然后我在扩展MapOnTouchListener类的同一个活动中创建了一个类。
class MyTouchListener extends MapOnTouchListener{
ScrollView sv;
public MyTouchListener(Context c, MapView m){
super(c, m);
}
public boolean onTouch(View v, MotionEvent event){
sv = (ScrollView) findViewById(R.id.scroll);
int action = event.getAction();
switch(action){
case MotionEvent.ACTION_DOWN:
// will disable the scrollview from being able to
// intercept the touch events for the mapview
sv.requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_UP:
// gives control back over to the scrollview
sv.requestDisallowInterceptTouchEvent(false);
break;
}
super.onTouch(v, event);
return true;
}
}
我希望这可以帮助别人,并节省他花在试图找到我要找的东西上的时间。