Android - 获取用鼠标单击的像素的坐标

时间:2011-12-07 16:52:39

标签: android coordinates pixel ontouchevent

我正在制作一款使用Google地图的Android应用。一个功能是用户可以触摸地图的点并检索坐标。我在这里找到了一个很棒的教程http://mobiforge.com/developing/story/using-google-maps-android?page=1,它展示了如何使用MotionEvent实现它(你可以在“获取被触摸的位置”下的教程中找到代码)。

我的问题是模拟器似乎不支持触摸事件,我没有Android设备随时测试它。所以我希望有一个方法,允许我用鼠标点击屏幕并获取被点击的像素的坐标(以便将它们转换为地理坐标)。

从我的研究到目前为止,我找不到任何合适的东西,如果存在某些东西,我也不会。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

我认为您会发现特定教程也会响应鼠标点击。所有屏幕截图都是模拟器。

关于作者编码风格的一个注释:

虽然

if (event.getAction() == 1)

将起作用

if (event.getAction() == MotionEvent.ACTION_UP) 

相同的东西,但更具描述性和更好的实践

答案 1 :(得分:1)

这将有助于你:

创建代码:

   mapView = (MapView) findViewById(R.id.mapView);
            mapView.setBuiltInZoomControls(true);
            List<Overlay> mapOverlays = mapView.getOverlays();
            MapOverlay mapOverlay = new MapOverlay();

           mapOverlays.add(mapOverlay);

将会响应触摸的叠加内部类(点击模拟器)

 class MapOverlay extends com.google.android.maps.Overlay
        {   

        @Override
        public boolean onTap(GeoPoint p, MapView mapView) {
            // TODO Auto-generated method stub


             mc= mapView.getController();
            mc.animateTo(p);

            latitude=p.getLatitudeE6() / 1E6;
            longitude=p.getLongitudeE6() /1E6 ;
                    Toast.makeText(Activity.this, 
                        p.getLatitudeE6() / 1E6 + "," + 
                        p.getLongitudeE6() /1E6 , 
                        Toast.LENGTH_SHORT).show();
      return true;

        }
}