9

Haritaya dokunulduğunda konumun koordinatlarını nasıl alacağımı aradım. Ancak, çoğu örneklerin tümü bir parametre olarak MapView gerektirir. Örneğin:Bir haritanın koordinatlarını MapFragment ile (MapView değil) birlikte nasıl alabilirim?

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); 
} 

nasıl nedenle MapFragment değil MapView ile harita üzerinde bir aday pozisyonun yerini alabilirim?

cevap

24

Google hizmetleri SDK oyna sağladığı Sample Code bir örnek vardır. Bu SupportMapFragment kullanır, bu yüzden yeni MapFragment kullanıyorsanız, bunun ne kadar yararlı olacağını emin değilim.

EventsDemoActivity haritayı örnek kodu kullanan bir yöntem sınıfına implement OnMapClickListener etmektir. Aşağıda kullanabileceğiniz kodlardan bazıları aşağıdadır.

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:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <TextView 
    android:id="@+id/tap_text" 
    android:text="@string/tap_instructions" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 
    <fragment 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    class="com.google.android.gms.maps.SupportMapFragment"/> 
</LinearLayout>