如何区分MapView及其Overlay上的触摸?

时间:2011-06-22 06:46:45

标签: android touch overlay android-mapview

我需要在MapView上有一个叠加层,当用户点击叠加项目(一个小针脚)时,我会显示一个气球标注,但当用户点击MapView上的其他位置时,它会移除叠加层并添加一个新的一个在接触位置。我在MapView上设置了OnTouchListener,所以我可以检测到触摸,但是如何区分触摸上的触摸?

谢谢!

1 个答案:

答案 0 :(得分:2)

好吧,我想你使用onTap(int index)方法,但只有当用户点击OverlayItem时它才会触发。因此,在您的情况下,您应该结合onTap()和onTouchEvent()方法,如下所示:

@Override 
protected boolean onTap(int index) { 
    selectedItem = items.get(index);
    Toast.makeText(context, "BooM!",
                Toast.LENGTH_SHORT).show();
    return true;
}

@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView) {
    selectedItem = null;
    return false;
}

你可以看到使用调试器如果你点击你的项目 - 你在onTap(),如果没有 - 你在onTouchEvent()。 当然,您应该覆盖onDraw()方法来绘制气球。