我需要在MapView上有一个叠加层,当用户点击叠加项目(一个小针脚)时,我会显示一个气球标注,但当用户点击MapView上的其他位置时,它会移除叠加层并添加一个新的一个在接触位置。我在MapView上设置了OnTouchListener,所以我可以检测到触摸,但是如何区分触摸上的触摸?
谢谢!
答案 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()方法来绘制气球。