我想将 GeoPoint 转换为屏幕点,以识别触摸事件上方的所有对象。所以,我试过这个:
Projection projection = this.mapView.getProjection();
GeoPoint gie = new GeoPoint(lat, lon);
Point po = new Point();
projection.toPixels(gie, po);
但是,po.x 和 po.y 不是屏幕坐标,而是 mapview 以像素而不是 lat,lon 为单位的坐标。
来自安卓开发者网站:
toPixels(GeoPoint in, android.graphics.Point out) 将给定的 GeoPoint 转换为屏幕像素坐标,相对于提供此 Projection 的 MapView 的左上角。
那么,是否可以将其转换为正确的屏幕坐标?
我想知道+触摸事件旁边的所有x GeoPoint,如上例所示:
----------------------------------------------------------------
(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 是真正的屏幕坐标(硬件坐标,而不是地图视图坐标)
我知道我也可以在 GeoPoint 中转换 x,y 屏幕坐标以将它们与我的 GeoPoint 进行比较,但是,由于缩放级别,我无法得到我想要的。