我希望将一个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.Point out) 将给定的GeoPoint转换为屏幕上像素坐标,相对于提供此Projection的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进行比较,但由于缩放级别的影响,我无法得到想要的结果。