Получить координаты на карте нажав в 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()
на MapView
) чтобы преобразовать это в широту и долготу.
Современный ответ, использующий Android Maps v2, заключается в использовании OnMapClickListener, который дает вам широту нажатия на карту.
Попробуй это:
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;
}
}
В этом вопросе я изложил некоторые детали своей реализации: как мне реагировать на нажатие Android MapView, но игнорировать пинч-зум?
Проблема, которую я обнаружил при использовании onTap(), заключается в том, что он также срабатывает при пинч-зуме, а это было не то, что требовалось моему приложению. Так что если вам нужно пинч-зум, мой код должен делать то, что вам нужно.
Как сказал @CommonsWare, вам нужно использовать onTouch()
функционировать, а не onClick()
, Вот пример, это именно то, что вам нужно: http://mobiforge.com/developing/story/using-google-maps-android