0

我想用手指在屏幕上检测地图的坐标。问题是当我用手指触摸屏幕时,坐标不会显示为吐司。我正在使用谷歌地图 v2。我的代码:

@Override
public boolean onTouchEvent(MotionEvent event) 
{
    if (event.getAction() == MotionEvent.ACTION_POINTER_DOWN) 
    {
        CrearLugar();
    }

    return super.onTouchEvent(event);
}

public void CrearLugar()
{
    final GoogleMap mMap=null;

    mMap.setOnMapClickListener(new OnMapClickListener() {
        public void onMapClick(LatLng point) {
            Projection proj=mMap.getProjection();
            Point coord = proj.toScreenLocation(point);

            Toast.makeText(
                MapaLugaresActivity.this,
                "Click\n" +
                "Lat: " + point.latitude + "\n" +
                "Lng: " + point.longitude + "\n" +
                "X: " + coord.x + " - Y: " + coord.y,
                Toast.LENGTH_SHORT).show();
        }
    });
}

一切都是正确的,除非我用手指触摸屏幕。当我这样做时,我想显示触摸的地方的坐标,但我什么都看不到,只能看地图。

怎么了?

谢谢。

4

1 回答 1

1

必须在活动的任何创建者(onCreate、onResume、onPause 等)中设置点击监听器。请注意,您将侦听器设置为(侦听)以进行更改。您仍然可以使用 onTouch 覆盖方法。这将有助于获取用户在屏幕中单击的绝对坐标,但它完全独立于地图。(顺便说一句,你需要绝对坐标做什么?)。

试试看:

@Override
public boolean onTouchEvent(MotionEvent event) 
{
    Toast.makeText(
            MapaLugaresActivity.this,
            "Click\n" +
            "X: " + event.getX() + " - Y: " + event.getY(),
            Toast.LENGTH_SHORT).show();

    return super.onTouchEvent(event);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Inflate view
    // Inflate map view

    mMap.setOnMapClickListener(new OnMapClickListener() {
        public void onMapClick(LatLng point) {
            Projection proj=mMap.getProjection();
            Point coord = proj.toScreenLocation(point);

            Toast.makeText(
            MapaLugaresActivity.this,
            "Click\n" +
            "Lat: " + point.latitude + "\n" +
            "Lng: " + point.longitude + "\n",
            Toast.LENGTH_SHORT).show();
        }
    });
}
于 2013-04-08T20:59:25.240 回答