Antwort

13

Sie können den Standort von den meisten Berührungsereignissen abrufen, z.

public boolean onTouchEvent(MotionEvent event) 
    { 
     int X = (int)event.getX();   
     int Y = (int)event.getY(); 

     GeoPoint geoPoint = mapView.getProjection().fromPixels(X, Y); 
    } 
4

Versuchen Sie, diese

public class Google_maps extends MapActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_google_maps); 


     MapView mapview=(MapView)findViewById(R.id.mapView); 
     mapview.setBuiltInZoomControls(true); 
     MapOverlay mapOverlay = new MapOverlay(); 
     List<Overlay> listOfOverlays = mapview.getOverlays(); 
     listOfOverlays.clear(); 
     listOfOverlays.add(mapOverlay);   

     mapview.invalidate(); 

    } 

    class MapOverlay extends Overlay 
    { 

     @Override 
     public boolean onTouchEvent(MotionEvent event, MapView mapView) 
     { 
      //---when user lifts his finger--- 
      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; 
     }   
    } 
    @Override 
    protected boolean isRouteDisplayed() { 
     return false; 
    }} 
7

Statt die Touch mit einer Überlagerung des Abfangens Sie eine OnMapClickListener direkt am Objekt GoogleMap einstellen.

googleMap.setOnMapClickListener(new OnMapClickListener(){ 
     void onMapClick(LatLng point){ 
      Toast.makeText(getContext(), 
       point.latitude + ", " + point.longitude, 
       Toast.LENGTH_SHORT).show(); 
     } 
    }); 

Wie die GoogleMap-Objekt aus einem MapFragment erhalten oder ein MapView sehen https://developers.google.com/maps/documentation/android/map#add_map_code