Android - получить координаты пикселя, на который нажали мышью

Я делаю приложение для Android, которое использует карты Google. Одна из функций заключается в том, что пользователь может коснуться точки на карте и получить координаты. Я нашел отличное руководство здесь http://mobiforge.com/developing/story/using-google-maps-android?page=1, в котором показано, как реализовать это с помощью события MotionEvent (вы можете найти код в руководстве в разделе "Получение местоположения, к которому коснулись").

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

Из моих исследований до сих пор я не мог найти ничего подходящего, и я не знаю, существует ли что-то. Кто-нибудь может помочь?


person george    schedule 07.12.2011    source источник


Ответы (2)


Это поможет вам:

код при создании:

   mapView = (MapView) findViewById(R.id.mapView);
            mapView.setBuiltInZoomControls(true);
            List<Overlay> mapOverlays = mapView.getOverlays();
            MapOverlay mapOverlay = new MapOverlay();

           mapOverlays.add(mapOverlay);

внутренний класс для оверлея, который будет реагировать на прикосновение (нажмите на эмулятор)

 class MapOverlay extends com.google.android.maps.Overlay
        {   

        @Override
        public boolean onTap(GeoPoint p, MapView mapView) {
            // TODO Auto-generated method stub


             mc= mapView.getController();
            mc.animateTo(p);

            latitude=p.getLatitudeE6() / 1E6;
            longitude=p.getLongitudeE6() /1E6 ;
                    Toast.makeText(Activity.this, 
                        p.getLatitudeE6() / 1E6 + "," + 
                        p.getLongitudeE6() /1E6 , 
                        Toast.LENGTH_SHORT).show();
      return true;

        }
}
person Pratik Bhat    schedule 07.12.2011
comment
Да, это прекрасно работает! (до сих пор проверял только на эмуляторе) Большое спасибо! - person george; 07.12.2011
comment
Сделанный! Извините, новичок на форуме, и я не знал об этой функции. Я погуглил и нашел здесь... Еще раз спасибо! - person george; 09.12.2011

Я думаю, вы обнаружите, что этот конкретный учебник также будет реагировать на щелчки мыши. В конце концов, все снимки экрана эмулятора.

Всего одно замечание о стиле кодирования автора:

пока

if (event.getAction() == 1)

буду работать

if (event.getAction() == MotionEvent.ACTION_UP) 

означает то же самое, но является более описательным и более практичным

person NickT    schedule 07.12.2011
comment
Я не знаю, делает ли он то, что я хотел в туториале.. Я действительно не мог его найти, может быть, моя вина. Спасибо за ответ! - person george; 07.12.2011