9

Tôi đã tìm kiếm xung quanh cách lấy tọa độ của một vị trí khi bản đồ được khai thác. Tuy nhiên, hầu hết, nếu không phải tất cả các ví dụ đều yêu cầu một thông số MapView. Ví dụ:Làm cách nào để có được tọa độ của bản đồ trên máy tính với MapFragment (không phải 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); 
} 

Làm thế nào để có được do vị trí của một vị trí khai thác trên bản đồ với MapFragment và không MapView?

Trả lời

24

Có ví dụ trong số Sample Code do SDK dịch vụ của Google Play cung cấp. Điều này sử dụng SupportMapFragment vì vậy tôi không chắc chắn điều này sẽ hữu ích như thế nào nếu bạn đang sử dụng MapFragment mới.

Phương thức mà EventDemoActivity sử dụng trong mã mẫu bản đồ này là implement OnMapClickListener cho lớp học. Dưới đây là một số mã bạn có thể sử dụng.

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> 
Các vấn đề liên quan