экран и просмотр координат в Android - PullRequest
2 голосов
/ 12 января 2011

Если пользователь касается экрана, я могу получить координаты этого касания, используя методы MotionEvent getX () и getY ().

Но если я правильно понял, для рисования холста будут использоваться другие координаты.

Мой коллега имел в виду, это координаты вида и экрана.Но он не знал, есть ли какие-то методы преобразования.

Может быть, вы мне поможете.

Заранее спасибо,

Мур

UPD

У меня небольшая путаница.Я использую osmdroid, они рисуют наложения как холст.

Так что, если я сравниваю координаты холста, которые они используют для рисования с координатами MotionEvent, я ничего не понимаю.

Это координаты прямоугольника (слева, справа, снизу, сверху). 16899.0 / 16948.0 -86483.0 / -86515.0 Я распечатал.

Координаты MotionEvent: 252.0 / 223.0

Ответы [ 3 ]

1 голос
/ 12 января 2011

Он не прав. Холст не использует ничего другого. Вам просто нужно учитывать, где находится холст на экране относительно того, где пользователь коснулся.

0 голосов
/ 20 сентября 2014

Это координаты прямоугольника (слева, справа, снизу, сверху). 16899.0 / 16948.0 -86483.0 / -86515.0 Я распечатал.

Координаты MotionEvent: от 0/0 до 252 /223

Похоже, osmdroid изменяет координаты.Это имеет смысл для карты, поэтому, если вы нарисуете что-то в 0,0, вы нарисуете что-то в вашем местоположении.

Я полагаю, возвращаемые координаты - это координаты карты, начиная с местоположения (0,0), потому что изображение 16899.0+ 86483,0 = 103382,0 пикселя в высоту и 16948,0 + 86515,0 = 103463,0 пикселя в ширину - это изображение размером 10200 гигапикселей, потребляющее почти 30 ТБ памяти, и я сомневаюсь, что смартфон может иметь столько свободной памяти ...

Так что для вашего приложения я предлагаю такой подход:

touch = touch coordinates
scale = map scale
top = top left of the map

point_on_map = top + (touch*scale)
0 голосов
/ 12 января 2011

Если вы рисуете в точке 0,0 на вашем холсте, вы будете рисовать в верхнем левом углу. Так что вам не нужно делать ничего особенного.

Возможно, ваш друг немного запутался с расположением экрана / окна: http://developer.android.com/reference/android/view/View.html#getLocationInWindow(int[])

...