点击地图获取坐标(openstreetmaps)

tha*_*io2 7 maps android osmdroid onclicklistener

如何通过在开放的街道地图中点击它来获取点的坐标?

尝试:

public void onClick(View v) {
    Projection proj = mapView.getProjection();
    IGeoPoint p = proj.fromPixels(v.getX(), v.getY());
    System.out.println("x: "+ v.getX() + " y: "+ v.getY());
}
Run Code Online (Sandbox Code Playgroud)

欢呼,Thanasio

San*_*eep 9

使用dispatchTouchEvent()方法.它的工作原理是因为它MapActivity继承了dispatchTouch事件,而不是OnTouchEvent来自Activity类.

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    int actionType = ev.getAction();
    switch (actionType) {
    case MotionEvent.ACTION_UP:
            Projection proj = mapView.getProjection();
            GeoPoint loc = proj.fromPixels((int)ev.getX(), (int)ev.getY()); 
            String longitude = Double.toString(((double)loc.getLongitudeE6())/1000000);
            String latitude = Double.toString(((double)loc.getLatitudeE6())/1000000);

             Toast toast = Toast.makeText(getApplicationContext(), "Longitude: "+ longitude +" Latitude: "+ latitude , Toast.LENGTH_LONG);
            toast.show();

    }
return super.dispatchTouchEvent(ev);
}
Run Code Online (Sandbox Code Playgroud)


vid*_*uka 0

@Sandy是正确的,但不是onTap()重写onSingleTapUp(MotionEvent e, MapView mapView)onSingleTapConfirmed(MotionEvent e, MapView mapView)方法,例如

onSingleTapUp(MotionEvent e, MapView mapView) {
    Projection proj = mapView.getProjection();
    IGeoPoint p = proj.fromPixels(e.getX(), e.getY());
}
Run Code Online (Sandbox Code Playgroud)