Android нажмите на карту и получить координаты - PullRequest
4 голосов
/ 04 февраля 2011

Привет, ребята. Я пытаюсь создать приложение, которое, как только пользователь нажимает на карту, получает координаты этой конкретной точки.

Среди прочего я также читал, что: Получить координаты на карте в Android

Кажется, что это наиболее релевантный пост, но я хочу уметьнажать в любом месте на карте, а не на маркер / элемент наложения.На самом деле я хочу создать маркер в той конкретной точке, которую пользователь нажал, и получить его координаты.

Возможно ли это?

Спасибо

Майк

Ответы [ 3 ]

1 голос
/ 04 февраля 2011

Да. На самом деле, ответ, который я дал на этот другой вопрос , - это то, что вам нужно.

0 голосов
/ 28 февраля 2012

Вам нужно переопределить onTouchEvent ().

Я надеюсь, что следующий код поможет вам ... показать, используя onTouchEvent (), пока пользователь отрывает палец от карты ...

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

@Override
        public boolean onTouchEvent(MotionEvent event, MapView mapView) 
        {   
            GeoPoint point_touch;
            MapController map_controller=mapView.getController();
            //---when user lifts his finger---
            if (event.getAction() == event.ACTION_UP) {                
                point_touch = mapView.getProjection().fromPixels((int) event.getX(),(int) event.getY());                    
                Log.i("Cordinates","Lattitude="+point_touch.getLatitudeE6() / 1E6 
                        +" Longitude="+point_touch.getLongitudeE6() /1E6  );
                map_controller.animateTo(point_touch);
                return true;
            }    
            else
            {
                return false;
            }

         }
0 голосов
/ 04 февраля 2011

Должно быть тривиально с небольшим количеством математики. Вы можете использовать getLatitudeSpan() и getLongitudeSpan(), чтобы получить экстенты видимой карты, и getMapCenter(), чтобы увидеть центральную точку. Просто сопоставьте это с координатами события касания.

РЕДАКТИРОВАТЬ: Марк, как всегда, имеет еще более элегантное решение.

...