Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为google map设置onclickListener而不覆盖上一个_Android_Google Maps - Fatal编程技术网

Android 为google map设置onclickListener而不覆盖上一个

Android 为google map设置onclickListener而不覆盖上一个,android,google-maps,Android,Google Maps,这个代码片段很有效,我可以看到谷歌地图,当我按下地图上的某些点时,我确实在TextView上得到了预期的结果,但是地图没有移动,也没有响应,我想内置的onclicklistener已经被我的覆盖了。我如何修复这个问题 我尝试过的事情: 我试图寻找一个getOnClickLisetener来保存它,并在我的click侦听器上激活它,但没有这样的方法 我尝试创建MapOverlay类,并将触控功能复制到其onTouch方法中,不仅地图没有移动,我还从map.getProjection()接收空结果

这个代码片段很有效,我可以看到谷歌地图,当我按下地图上的某些点时,我确实在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);
        }