0
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;
            }
    });

此代码片段有效,我可以看到谷歌地图,当我按下地图上的某些点时,我确实在我的 TextView 上得到了预期的结果,但地图没有移动并且没有响应,我猜是内置的 onclicklistener被我的覆盖了我该如何解决这个问题?

我尝试过的事情:

  1. 我尝试寻找一个 getOnClickLisetener 来保留它并在我的点击监听器上激活它,但没有这样的方法

  2. 我尝试创建 MapOverlay 类并将触摸功能复制到它的 onTouch 方法,不仅地图没有移动,我还从 map.getProjection() 接收到空结果。

我该如何克服呢?

4

3 回答 3

0

Try

control = map.getController();
于 2012-08-16T13:56:50.973 回答
0
于 2012-08-16T14:05:29.047 回答
0

创建扩展 Mapview 的 CustomMapview。

在其中,覆盖 onInterceptTouchEvent(MotionEvent ev) 方法。

像这样:

public boolean onInterceptTouchEvent(MotionEvent ev) {
        //your logic

        return super.onInterceptTouchEvent(ev);
    }

在您的逻辑中,您可以触发您的自定义侦听器,这将通知您的活动已按下哪个坐标,以便您可以相应地更新您的文本视图

于 2012-08-16T13:59:19.077 回答