如何使用 MapFragment(不是 MapView)获取地图的坐标?

Posted

技术标签:

【中文标题】如何使用 MapFragment(不是 MapView)获取地图的坐标?【英文标题】:How do I get the coordinates of a map on tap with MapFragment (not MapView)? 【发布时间】:2013-02-28 00:40:41 【问题描述】:

我已经搜索了如何在点击地图时获取位置的坐标。但是,大多数(如果不是所有)示例都需要 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 在地图上获取点击位置的位置?

【问题讨论】:

【参考方案1】:

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:

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

【讨论】:

以上是关于如何使用 MapFragment(不是 MapView)获取地图的坐标?的主要内容,如果未能解决你的问题,请参考以下文章

在 Scrollview 中滚动时 Android v2 MapFragment 抖动

ScrollView 中的 MapFragment

SupportMapFragment vs MapFragment性能方面

我应该使用 MapView 还是 MapFragment

谷歌地图光束在 android MapFragment 中显示用户方向/标题

无法实例化 android.gms.maps.MapFragment