Android 为google map设置onclickListener而不覆盖上一个
这个代码片段很有效,我可以看到谷歌地图,当我按下地图上的某些点时,我确实在TextView上得到了预期的结果,但是地图没有移动,也没有响应,我想内置的onclicklistener已经被我的覆盖了。我如何修复这个问题 我尝试过的事情:Android 为google map设置onclickListener而不覆盖上一个,android,google-maps,Android,Google Maps,这个代码片段很有效,我可以看到谷歌地图,当我按下地图上的某些点时,我确实在TextView上得到了预期的结果,但是地图没有移动,也没有响应,我想内置的onclicklistener已经被我的覆盖了。我如何修复这个问题 我尝试过的事情: 我试图寻找一个getOnClickLisetener来保存它,并在我的click侦听器上激活它,但没有这样的方法 我尝试创建MapOverlay类,并将触控功能复制到其onTouch方法中,不仅地图没有移动,我还从map.getProjection()接收空结果
private LocationManager manager;
private TextView tv;
private MapController control;
private GeoPoint chosen = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.placechooser);
final MapView map = (MapView) findViewById(R.id.gmap);
tv=(TextView) findViewById(R.id.textView1);
map.setBuiltInZoomControls(true);
map.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
chosen = map.getProjection().fromPixels(
(int) event.getX(), (int) event.getY());
tv.setText((chosen.getLatitudeE6() / (Math.pow(10,6)) + "," + (chosen.getLongitudeE6() / (Math.pow(10,6)))));
return true;
}
});
创建扩展Mapview的CustomMapview 在其中,重写onInterceptTouchEvent(MotionEvent ev)方法 像这样:
control = map.getController();
在您的逻辑中,您可以启动自定义侦听器,它将通知您的活动已按下哪个坐标,以便您可以相应地更新textview。这有点复杂,但您应该能够通过子类化
MapView
来完成
在MapView
类中创建一个内部成员类(称之为CompositeListener
),类似于此问题的答案:并创建该类的实例
在onCreate
过程中,将MapView.mOnClickListener
传递给您的CompositeListener
实例
还重写setOnClickListener
方法,并将自定义MapView
类上设置的所有侦听器传递给CompositeListener
实例
最后,使用super.setOnClickListener
方法将CompositeListener
实例设置为onClickListener
的MapView
请记住,我没有测试过这个,因此可能需要一些额外的编码才能正常工作。您是否尝试过在onTouchListener中返回false而不是true?是的,实际上我尝试过将其转换为true,因为它不适用于false。。。
public boolean onInterceptTouchEvent(MotionEvent ev) {
//your logic
return super.onInterceptTouchEvent(ev);
}