9

地図をタップしたときの位置の座標を取得する方法を調べました。しかし、すべてではないにしてもほとんどの例では、パラメータとしてMapViewが必要です。たとえば:MapFragment(MapViewではありません)を使用してタップでマップの座標を取得するにはどうすればよいですか?

public boolean onTap(GeoPoint p, MapView map){ 
    if (isPinch){ 
     return false; 
    }else{ 
     Log.i(TAG,"TAP!"); 
     if (p!=null){ 
      handleGeoPoint(p); 
      return true;   // We handled the tap 
     }else{ 
      return false;   // Null GeoPoint 
     } 
    } 
} 

@Override 
public boolean onTouchEvent(MotionEvent e, MapView mapView) 
{ 
    int fingers = e.getPointerCount(); 
    if(e.getAction()==MotionEvent.ACTION_DOWN){ 
     isPinch=false; // Touch DOWN, don't know if it's a pinch yet 
    } 
    if(e.getAction()==MotionEvent.ACTION_MOVE && fingers==2){ 
     isPinch=true; // Two fingers, def a pinch 
    } 
    return super.onTouchEvent(e,mapView); 
} 

にはどうすればいいのでMapFragmentなくMapViewで地図上のタップ位置の場所を得るのですか?

答えて

24

Google PlayサービスSDKによって提供されるSample Codeの例があります。これはSupportMapFragmentを使用していますので、新しいMapFragmentを使用している場合はどのように役立つか分かりません。

EventsDemoActivityがこのマップのサンプルコードで使用するメソッドは、クラスに対してimplement OnMapClickListenerです。以下は、使用できるコードの一部です。

EventsDemoActivity:

public class EventsDemoActivity extends FragmentActivity 
    implements OnMapClickListener, OnMapLongClickListener { 

    private GoogleMap mMap; 
    private TextView mTapTextView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.events_demo); 

     mTapTextView = (TextView) findViewById(R.id.tap_text); 

     setUpMapIfNeeded(); 
    } 

    private void setUpMap() //If the setUpMapIfNeeded(); is needed then... 
    { 
     mMap.setOnMapClickListener(this); 
     mMap.setOnMapLongClickListener(this); 
    } 

    @Override 
    public void onMapClick(LatLng point) { 
     mTapTextView.setText("tapped, point=" + point); 
    } 

    @Override 
    public void onMapLongClick(LatLng point) { 
     mTapTextView.setText("long pressed, point=" + point); 
    } 
} 


events_demo.xml:

​​
関連する問題