向MapView添加触摸事件侦听器

Ach*_*int 9 android

所以我想返回我在地图上触摸的任何点的地理位置,但是我的代码在移动/点击屏幕时没有做任何事情.我是Java和Android的新手,所以我认为这与我在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;
    }
}
Run Code Online (Sandbox Code Playgroud)

}

我如何让它工作?

Flo*_*Flo 10

您没有将自定义Overlay类mapOverlay(顺便说一句,类名称始终以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);
}               
Run Code Online (Sandbox Code Playgroud)

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