9

Ich habe gesucht, wie man die Koordinaten eines Ortes erhält, wenn die Karte angetippt wird. Die meisten, wenn nicht alle Beispiele erfordern jedoch einen als Parameter. Zum Beispiel:Wie erhalte ich die Koordinaten einer Karte mit MapFragment (nicht 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); 
} 

Wie bekomme ich deshalb den Standort einer angezapften Position auf der Karte mit MapFragment und nicht MapView?

Antwort

24

Es gibt ein Beispiel im Sample Code, das vom Google Play-Dienst-SDK bereitgestellt wird. Dies verwendet SupportMapFragment, so dass ich nicht sicher bin, wie hilfreich das sein wird, wenn Sie das neue MapFragment verwenden. Die Methode, die die EventsDemoActivity in diesem Map-Beispielcode verwendet, lautet implement OnMapClickListener für die Klasse. Im Folgenden finden Sie einen Teil des Codes, den Sie möglicherweise verwenden können.

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>