Я хотел бы преобразовать 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, но , из-за уровня масштабирования я не могу получить то, что хочу.