Получить координаты на нажав карту в android
Я пытаюсь сделать что-то вроде этого: у меня mapactivity и когда пользователь нажимает на карте он показывает координаты этого места. Я уже переопределил метод onclick, но он даже не вызывается. Есть Идеи?
public class MapPoint extends MapActivity implements OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mappoints);
MapView map = (MapView)findViewById(R.id.mapview);
map.setOnClickListener(this);
map.setBuiltInZoomControls(true);
map.getController().setZoom(18);
map.getController().setCenter(new GeoPoint(39735007, -8827330));
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
public void onClick(View arg0) {
Toast.makeText(this, "text", Toast.LENGTH_SHORT);
}
}
6 ответов
onClick()
здесь не используется. Вам нужно будет переопределить onTouchEvent()
. вот пример проекта показ с помощью onTouchEvent()
перетащить ItemizedOverlay
флажки на карте.
даны координаты экрана касания, вы можете использовать Projection
(от getProjection()
on MapView
), чтобы перевести в широту и долготу.
современный ответ, используя Android Maps v2, заключается в использовании OnMapClickListener, который дает вам LatLng крана на карте.
Я поставил некоторые детали моей реализации в этом вопросе: Как ответить на нажатие на Android MapView, но игнорировать pinch-zoom?
проблема, которую я нашел с использованием onTap (), заключается в том, что он также увольняется, когда вы сжимаете масштаб, что не было нужно моему приложению. Поэтому, если вам нужен pinch-zoom, мой код должен делать то, что вам нужно.
попробуйте это:
private class OverlayMapa extends Overlay {
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow)
{
...
}
@Override
public boolean onTap(GeoPoint point, MapView mapView)
{
Context contexto = mapView.getContext();
String msg = "Lat: " + point.getLatitudeE6()/1E6 + " - " +
"Lon: " + point.getLongitudeE6()/1E6;
Toast toast = Toast.makeText(contexto, msg, Toast.LENGTH_SHORT);
toast.show();
return true;
}
}
Как сказал @CommonsWare, вам нужно использовать onTouch()
функции, а не onClick()
. Вот пример, это именно то, что вам нужно : http://mobiforge.com/developing/story/using-google-maps-android