Intereting Posts

Как получить координаты карты при нажатии с MapFragment (а не MapView)?

Я искал вокруг, как получить координаты местоположения при нажатии на карту. Однако большинство, если не все примеры требуют 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 ?

Solutions Collecting From Web of "Как получить координаты карты при нажатии с MapFragment (а не MapView)?"

В примере кода, предоставленном SDK служб Google Play, приведен пример. Это использует 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_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>