【问题标题】:Returning a GeoPoint on user touch MapView Android在用户触摸 MapView Android 上返回 GeoPoint
【发布时间】:2011-11-02 04:36:09
【问题描述】:

我在试图找出一种方法来返回带有用户刚刚触摸的位置的经度和纬度的 GeoPoint 时遇到了麻烦。我已经看到并阅读了吨或示例,它们通过覆盖dispatchTouchEvent() 在吐司中显示经度和纬度。 我相信这不适用于我的情况,原因如下。

我希望用户能够单击一个按钮,然后该按钮将调用另一个方法,该方法将在用户下次点击时返回一个地理点。因此,简而言之,只有在用户单击按钮后,才会在点击时返回地理点。

我可以看到使用dispatchTouchEvent() 的唯一解决方法如下。

如果按钮已被点击,则写入共享首选项。然后在dispatchTouchEvent() 检查按钮是否被点击。如果它没有被点击,什么也不做。如果它被点击,将经度和纬度写入共享首选项,然后从共享首选项中读取它们,并以不同的方法从中创建一个 GeoPoint。

我不觉得这是一个非常优雅的想法。我觉得应该有一种更清洁的方式来做到这一点(比如以某种方式只返回一个地理点)

我希望这有点道理。我会尽力回答任何问题。

提前致谢。

【问题讨论】:

  • 你看到了吗link
  • 这看起来很有希望,不幸的是我今晚没有时间实现它。我会告诉你明天会发生什么!谢谢

标签: android android-mapview


【解决方案1】:

我刚刚看了你的问题的标题..如果回答错误,请原谅我..:D

    mapView.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            GeoPoint p = null;

            if (event.getAction() == MotionEvent.ACTION_UP) {
                p = mapView.getProjection().fromPixels((int) event.getX(),
                        (int) event.getY());
                mapBackButton.setText(p.getLatitudeE6() / 1E6 + ","
                        + p.getLongitudeE6() / 1E6 + "Action is : "
                        + event.getAction());
                return true;
                Toast.makeText(
                        getBaseContext(),
                        p.getLatitudeE6() / 1E6 + "," + p.getLongitudeE6()
                                / 1E6 + "Action is : " + event.getAction(),
                        Toast.LENGTH_SHORT).show();
            }
            return false;
        }
    });

【讨论】:

  • 感谢您的回答,但我正在尝试找出一种方法来实际返回 GeoPoint 而不仅仅是显示祝酒词。我有一个使用类似于你的方法的工作,只是试图找到一种更优雅的方法。如果您想了解有关我到底想要做什么的更多信息,请阅读我的帖子。
  • p.getLatitudeE6() / 1E6 和 p.getLongitudeE6()/1E6 实际上是地理点......你可以在任何地方使用它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
相关资源
最近更新 更多