Получение координат при нажатии в любом месте MapView - PullRequest
3 голосов
/ 07 мая 2010

Я просто не могу заставить это работать. Я попытался использовать код ниже с onTouchEventand, и он не работает. Если я возвращаю true в конце метода, я получаю тост с координатами, но не могу переместить карту, и если я возвращаю false, я могу переместить карту, но не могу отобразить тост после того, как пользователь нажимает на карту. Если я правильно понял, другой метод onTap используется только для нажатия на оверлеи. Кто-нибудь понял это?

        public boolean onTouchEvent(MotionEvent arg0, MapView arg1) {

       //super.onTouchEvent(arg0);


       int akcija = arg0.getAction(); 

        if(akcija == MotionEvent.ACTION_UP){
            if(!premik) {
                Projection proj = mapView.getProjection();
                GeoPoint loc = proj.fromPixels((int)arg0.getX(), (int)arg0.getY()); 
                String sirina=Double.toString(loc.getLongitudeE6()/1000000);
                String dolzina=Double.toString(loc.getLatitudeE6()/1000000);

                 Toast toast = Toast.makeText(getApplicationContext(), "Širina: "+sirina+" Dolzina: "+dolzina, Toast.LENGTH_LONG);
                toast.show();
            }
        }     

        else if (akcija == MotionEvent.ACTION_DOWN){

            premik= false;

        }
        else if (akcija== MotionEvent.ACTION_MOVE){             
            premik = true;
        }


        return false;
        //return super.onTouchEvent(arg0);
      }

1 Ответ

6 голосов
/ 07 мая 2010

использовать метод dispatchTouchEvent ().оно работает.почему, потому что MapActivity наследует событие dispatchTouch, а не OnTouchEvent из класса деятельности.проверить это документация

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    int actionType = ev.getAction();
    switch (actionType) {
    case MotionEvent.ACTION_UP:
            Projection proj = mapView.getProjection();
            GeoPoint loc = proj.fromPixels((int)ev.getX(), (int)ev.getY()); 
            String longitude = Double.toString(((double)loc.getLongitudeE6())/1000000);
            String latitude = Double.toString(((double)loc.getLatitudeE6())/1000000);

             Toast toast = Toast.makeText(getApplicationContext(), "Longitude: "+ longitude +" Latitude: "+ latitude , Toast.LENGTH_LONG);
            toast.show();

    }

    return super.dispatchTouchEvent(ev);
}
...