android – 添加触摸事件监听器到MapView

所以我想返回我在地图上触摸的任何点的地理位置,但是我的代码在移动/点击屏幕上没有任何作用.我是 JavaAndroid的新手,所以我认为它与我在java中缺乏编码知识有关.这是我的代码
package sdpd.loc;

import sdpd.loc.createNote.mapOverlay;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;

import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.Toast;
import android.app.Activity;

public class createNote extends MapActivity {

@Override
protected boolean isRoutedisplayed() {
    return false;
}       

@Override
public void onCreate(Bundle savedInstanceStates){       
    super.onCreate(savedInstanceStates);
    setContentView(R.layout.map);

    MapView mapview=(MapView)findViewById(R.id.MapView);
    mapview.setBuiltInZoomControls(true);


}   


class mapOverlay extends com.google.android.maps.Overlay{
    @Override

    public boolean onTouchEvent(MotionEvent event,MapView mapview){

        if (event.getAction()==1){
            GeoPoint p=mapview.getProjection().fromPixels((int)event.getX(),(int)event.getY());
            Toast.makeText(getBaseContext(),p.getLatitudeE6()/1E6 + "," + p.getLongitudeE6()/1E6,Toast.LENGTH_SHORT).show();

        }
        return false;
    }
}

}

如何让它上班?

解决方法

您没有注册您的自定义Overlay类mapOverlay(btw.类名始终使用Java中的大写字母)映射到MapView.通过创建类的实例并将其添加到MapView的叠加集合来执行此操作.

您可以通过将以下代码附加到活动的onResume()方法来实现.

public void onCreate(Bundle savedInstanceStates){       
    super.onCreate(savedInstanceStates);
    setContentView(R.layout.map);

    MapView mapview=(MapView)findViewById(R.id.MapView);
    mapview.setBuiltInZoomControls(true);

    mapOverlay myOverlay = new mapOverlay();
    List<Overlay> overlays = mMapView.getoverlays();        
    overlays.add(myOverlay);
}

现在您的叠加层已注册,触摸事件应处理.

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...