Подтвердить что ты не робот

Получить координаты при нажатии на карту в 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);
}

}

4b9b3361

Ответ 1

Попробуйте следующее.

Напишите класс, который происходит из класса Overlay и переопределяет onTap(). Затем вы можете добавить свой оверлей к MapView. Объект GeoPoint, который представляет позицию вашего нажатия, передается методу onTap(), когда вы размещаете где-нибудь на карте.

Ответ 2

onClick() здесь не используется. Вам необходимо переопределить onTouchEvent(). Вот пример проекта, показывающий использование onTouchEvent() для перетаскивания плагинов ItemizedOverlay.

Учитывая координаты экрана касания, вы можете использовать Projection (от getProjection() on MapView), чтобы преобразовать его в широту и долготу.

Ответ 4

Я поставил некоторые детали моей реализации в этом вопросе: Как мне ответить на нажатие на Android MapView, но игнорировать масштабирование?

Проблема, с которой я столкнулась при использовании onTap(), заключается в том, что она также запускается, когда вы щелкаете-зум, что не то, что нужно моему приложению. Поэтому, если вам нужен масштабирование, мой код должен делать то, что вам нужно.

Ответ 5

Попробуйте следующее:

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;
 }
}