4

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

Среди других я также прочитал, что: Get coordinates on tapping map in android

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

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

Благодаря

Майк

ответ

1

Да. Фактически, the answer I gave in that other question - это то, что вам нужно.

+0

Havent пробовал еще, но это, кажется, как вы добавляете метод onTouchEvent к пункту наложения и не карту он self..Thanks для ответ в любом случае .. – mixkat

+0

Хорошо, я беру это обратно :) ... он работает абсолютно нормально ... удивительно !!!! Еще раз спасибо !!!! – mixkat

+0

@mixkat, как вы сделали? – Erum

0

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

EDIT: Mark, как всегда, имеет еще более элегантное решение.

+0

Спасибо за ответ чувак !!! – mixkat

+0

На самом деле, этот пришел из вклада читателя, поэтому я не могу взять на себя полную ответственность. – CommonsWare

0

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

я надеюсь, что следующий код поможет U ... показывая, используя 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; 
      } 

     } 
Смежные вопросы