回答

13

您可以從大部分觸摸事件中獲取位置,例如,

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

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

試試這個

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

而是截取的TouchEvent與覆蓋,你可以直接在GoogleMap對象上設置OnMapClickListener的。

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

如何從MapFragment獲取GoogleMap對象或MapView看到 https://developers.google.com/maps/documentation/android/map#add_map_code

相關問題