Как преобразовать GeoPoint в аппаратную экранную точку

Я хотел бы преобразовать GeoPoint в точку экрана, чтобы идентифицировать все объекты, которые находятся над событием касания. Итак, я пробовал это:

Projection projection = this.mapView.getProjection(); 
GeoPoint gie = new GeoPoint(lat, lon);
Point po = new Point();
projection.toPixels(gie, po);

Но po.x и po.y - это не координаты экрана, а координаты карты в пикселях, а не широта, долгота.

С веб-сайта разработчиков Android:

toPixels(GeoPoint in, android.graphics.Указывать) Преобразует данный GeoPoint в экранные пиксельные координаты относительно левого верхнего угла MapView, который предоставил эту проекцию.

Итак, возможно ли преобразовать его в правильные экранные координаты?

Я хочу знать все xGeoPoint, которые находятся рядом с событием касания +, как в приведенном выше примере:

----------------------------------------------------------------
(0,0) -----------> x                                           |
  |                                                            |
  |                                                            | 
  |                                                            |  <-- My screen
  |                              + (touch event)               |
 \/                            x (my GeoPoint)                 |
  y                                                            |
                                                               | 
---------------------------------------------------------------- 

Я получаю событие касания следующим образом:

@Override
public boolean onTouchEvent(MotionEvent event) {
    float x = event.getX();
    float y = event.getY();

Здесь, в этом коде, x и y — это реальные экранные координаты (аппаратные, а не карты).

Я знаю, что могу преобразовать x,y экранные координаты в GeoPoint, чтобы сравнить их с моим GeoPoint, но , из-за уровня масштабирования я не могу получить то, что хочу.

6
задан Bibu 21 May 2012 в 13:27
поделиться