0

这里的目标是在谷歌地图上放置标记。

我想在用户执行 longClick() 时放置标记。

问题。长点击监听器没有关于用户点击位置的数据。我只能知道他真的点击了。此外,如果我使用触摸事件并且不使用它(我要求地图使用其默认监听器进行滚动),即使触摸重置,我也不会监听任何其他触摸事件。(其他事件不会发生这种情况,afaik)。

我如何知道用户在哪里进行了 longClick,以便我可以在地图中放置一个标记?

4

2 回答 2

1
public boolean onTouchEvent(MotionEvent event) {
   switch(event.getAction()) {
   case MotionEvent.ACTION_DOWN:
       dosomething
       return true; // processed the event
   default:
       return false;
   }
}

这将允许您处理 ACTION_DOWN 事件,并对所有其他事件进行默认处理。

于 2012-10-24T11:16:07.973 回答
0

检查这是否有助于检测长按。的onFinish()方法CountdownTimer是您需要放置代码以添加标记的位置。

它将用于检测长按,不确定它是否会覆盖MapView;)

        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                Log.d("action down", "action down started");
                countDownTimer = new CountDownTimer(2500, 1000) {

                    @Override
                    public void onTick(long millisUntilFinished) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onFinish() {
                        // TODO Auto-generated method stub
                        Toast.makeText(getApplicationContext(),
                                "long clicked", Toast.LENGTH_SHORT).show();
                    }
                };
                countDownTimer.start();
                Log.d("action down", "action down ended");
                break;

            case MotionEvent.ACTION_UP:
                countDownTimer.cancel();
                countDownTimer = null;
                break;

            default:
                break;
            }
            return false;
        }
于 2012-10-24T11:46:59.473 回答