2011-01-12 3 views
2

Si l'utilisateur touche l'écran, je peux obtenir les coordonnées de cette touche en utilisant les méthodes de MotionEvent getX() et getY(). Mais si j'ai bien compris pour le dessin de la toile, d'autres coordonnées seront utilisées. Mon collègue voulait dire, ce sont des coordonnées de vue et d'écran. Mais il ne savait pas, s'il y a des méthodes de transformations.écran et afficher les coordonnées dans Android

Peut-être que vous pouvez m'aider.

Nous vous remercions à l'avance,

Mur

UPD

J'ai une confusion peu. J'utilise osmdroid, ils dessinent des superpositions en toile. Donc, si je compare les coordonnées de toile qu'ils utilisent pour dessiner avec des coordonnées MotionEvent, je ne comprends rien.

Ce sont les coordonnées du rectangle (gauche, droite, bas, haut) 16899.0/16948.0 -86483.0/-86515.0 J'ai imprimé.

Coordonnées de MotionEvent sont 252,0/223,0

Répondre

1

Il a tort. Canvas n'utilise rien de différent. Vous devez juste considérer où la toile est située sur l'écran par rapport à l'endroit où l'utilisateur a touché.

0

Si vous dessinez à l'emplacement 0,0 sur votre toile, vous allez dessiner dans le coin supérieur gauche. Donc vous n'avez rien à faire de spécial.

Peut-être que votre ami a un peu confondu avec écran/emplacement des fenêtres: http://developer.android.com/reference/android/view/View.html#getLocationInWindow (int [])

+0

J'ai écrit une mise à jour à ma question – Tima

0

Ce sont les coordonnées du rectangle (gauche, droite, bas, haut) 16899.0/16948.0 -86483.0/-86515.0 J'ai imprimé.

Coordonnées du MotionEvent sont 0/0 à 252/223

dirait osmdroid est trasforming coordonnées. Cela a du sens pour une carte, donc si vous dessinez quelque chose à 0,0, vous dessinerez quelque chose à votre emplacement. Je suppose que les coordonnées retournées sont des coordonnées cartographiques, à partir de l'emplacement (0,0) car une image 16899.0 + 86483.0 = 103382.0 pixels de hauteur et 16948.0 + 86515.0 = 103463.0 pixels de large est une image de 10200 gigapixels, consommant près de 30 Tb de mémoire, et je suis dans le doute qu'un smarphone peut avoir une telle quantité de mémoire libre ...

donc, pour votre application, je suggère une approche comme celle-ci:

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

point_on_map = top + (touch*scale) 
Questions connexes