如果用户触摸屏幕,我可以使用MotionEvent getX()和getY()方法获取此触摸的坐标。
但如果我理解绘画画布的权利,将会使用其他坐标。
我的同事意味着,这些是视图和屏幕坐标。但他不知道,如果有一些转换方法。
也许你可以帮助我。
提前谢谢你,
穆尔
UPD
我有点困惑。我正在使用osmdroid,他们正在绘制叠加作为画布。
因此,如果我正在比较它们用于使用MotionEvent坐标绘图的画布坐标,我什么都不懂。
这些是矩形的坐标(左,右,下,上)16899.0 / 16948.0 -86483.0 / -86515.0我打印出来了。
MotionEvent的坐标为252.0 / 223.0
答案 0 :(得分:1)
他错了。 Canvas不会使用任何不同的东西。您只需考虑画布在屏幕上的位置与用户触摸的位置有关。
答案 1 :(得分:0)
如果您在画布上的位置0,0处绘制,则会在左上角绘制。所以你不需要做任何特别的事情。
也许你的朋友对屏幕/窗口位置有点困惑:http://developer.android.com/reference/android/view/View.html#getLocationInWindow(int [])
答案 2 :(得分:0)
这些是矩形(左,右,下,上)的坐标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 Tb的内存而且我怀疑一个smarphone可以有这么多的无记忆......
因此,对于您的应用,我建议使用这样的方法:
touch = touch coordinates
scale = map scale
top = top left of the map
point_on_map = top + (touch*scale)