android地图覆盖绘制

android地图覆盖绘制,android,Android,我创建了一个map overlay类,并重写了onTouchEvent方法,如下所示: @Override public boolean onTouchEvent(MotionEvent event, MapView mapView) { //TO-DO here we will capture when the users //has pointed a point to go.. if(event.getAction(

我创建了一个map overlay类,并重写了onTouchEvent方法,如下所示:

 @Override
    public boolean onTouchEvent(MotionEvent event, MapView mapView) 
    {   
        //TO-DO here we will capture when the users
        //has pointed a point to go..
        if(event.getAction() != MotionEvent.ACTION_MOVE){
            GeoPoint p = mapView.getProjection().fromPixels(
                    (int) event.getX(),
                    (int) event.getY());

                Geocoder geoCoder = new Geocoder(
                    getBaseContext(), Locale.getDefault());
                try {
                    List<Address> addresses = geoCoder.getFromLocation(
                        p.getLatitudeE6()  / 1E6, 
                        p.getLongitudeE6() / 1E6, 1);

                    String add = "";
                    if (addresses.size() > 0) 
                    {
                        for (int i=0; i<addresses.get(0).getMaxAddressLineIndex(); 
                             i++)
                           add += addresses.get(0).getAddressLine(i) + "\n";
                    }
                    Log.e("##################",
                            "screen touched: lat:"+(p.getLatitudeE6()/ 1E6)+"long:"+(p.getLongitudeE6()/ 1E6));
                    showMap((p.getLatitudeE6()/ 1E6),(p.getLongitudeE6()/ 1E6));
                    Toast.makeText(getBaseContext(), add, Toast.LENGTH_SHORT).show();
                }
                catch (IOException e) {                
                    e.printStackTrace();
                }   
                return true;
        }else
            return false;
    }        
@覆盖
公共布尔onTouchEvent(MotionEvent事件,MapView MapView)
{   
//在这里,我们将捕获用户
//他指出了一个要走的方向。。
if(event.getAction()!=MotionEvent.ACTION\u MOVE){
地理点p=mapView.getProjection().fromPixels(
(int)event.getX(),
(int)event.getY();
地理编码器地理编码器=新地理编码器(
getBaseContext(),Locale.getDefault();
试一试{
列表地址=geoCoder.getFromLocation(
p、 getLatitudeE6()/1E6,
p、 getLongitudeE6()/1E6,1);
字符串add=“”;
如果(地址.size()>0)
{

对于(inti=0;i请看动作向下和动作向上

它们都会告诉您开始和停止的位置,因此您可以进行如下检查:

float x, y;
if (event.getAction() == MotionEvent.ACTION_DOWN) {
    x = event.getRawX();
    y = event.getRawY();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
    if (((x - event.getRawX()) < threshhold_for_x) &&
        (y - event.getRawY()) < threshhold_for_y)) {

        // touch was in same location

    }
}
float x,y;
if(event.getAction()==MotionEvent.ACTION\u向下){
x=event.getRawX();
y=event.getRawY();
}else if(event.getAction()==MotionEvent.ACTION\u UP){
if(((x-event.getRawX())
这是一般的想法,当然你需要重置x和y,如果他们做了一个手势,并在同一个位置结束,它会触发它


您可能可以使用
getDownTime()
使它工作得更好。

您对spot是什么意思?您是指某个位置吗?是的,很抱歉,我的英语不太好。