我想用手指检测屏幕上触摸的地图坐标。问题是当我用手指触摸屏幕时,坐标不会显示为吐司。 我正在使用Google Maps 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();
}
});
}
除非我用手指触摸屏幕,否则一切都是正确的。当我这样做时,我想显示被触摸的地方的坐标,但我看不到任何东西,只有地图。
怎么了?
感谢。
答案 0 :(得分:1)
必须在活动的任何创建者中设置点击侦听器(onCreate,onResume,onPause,...)。请注意,您要将侦听器设置为(侦听)更改。 您仍然可以使用onTouch重写方法。它有助于获得用户在屏幕中点击的绝对坐标,但它完全独立于地图。 (顺便说一句,你需要什么absoluta坐标?)。
试试:
@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();
}
});
}