【发布时间】:2010-11-04 08:54:40
【问题描述】:
我使用本教程http://mobiforge.com/developing/story/using-google-maps-android 来显示地图视图并设置 onTouch 事件以在我单击特定区域时显示吐司消息(纬度/经度)。现在我的问题是,即使是移动地图,触摸屏幕时也会显示 Toast 消息?我只想在触地点和触地点相同时才显示吐司。我该如何实现?
【问题讨论】:
标签: android map touch-event
我使用本教程http://mobiforge.com/developing/story/using-google-maps-android 来显示地图视图并设置 onTouch 事件以在我单击特定区域时显示吐司消息(纬度/经度)。现在我的问题是,即使是移动地图,触摸屏幕时也会显示 Toast 消息?我只想在触地点和触地点相同时才显示吐司。我该如何实现?
【问题讨论】:
标签: android map touch-event
检查MotionEvent中是否设置了移动位
if(event.getAction() & MotionEvent.ACTION_MOVE == MotionEvent.ACTION_MOVE)
【讨论】:
(getAction() & MotionEvent.ACTION_MASK) 仅过滤掉动作。打印出来(或记录)。结果意味着:0 - 向下,1 - 向上,2 - 移动,3 - 取消。
这是正确的方法吗?我很确定有更好的方法。
if (event.getAction() == 0) {
touchX = (int) event.getX();
touchY = (int) event.getY();
}
if(event.getAction() == 1) {
if(event.getX() == touchX && event.getY()== touchY){
GeoPoint p = mapView.getProjection().fromPixels((int) event.getX(), (int)event.getY());
Toast.makeText(getBaseContext(),
p.getLatitudeE6() / 1E6 + "," +
p.getLongitudeE6() /1E6 ,
Toast.LENGTH_SHORT).show();
}
}
【讨论】:
event.getAction() == 0 不是正确的方法。 event.getAction() 返回所有标志。你应该只检查一点。
这对我有用,当我按下并拖动时没有任何反应,但是如果我按下并释放它就可以了!就像 onClickListener 行为一样。
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP){
// yer Code here ...........
}
return false;
}
【讨论】: