首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在用户触摸MapView Android上返回GeoPoint

在用户触摸MapView Android上返回GeoPoint
EN

Stack Overflow用户
提问于 2011-11-02 12:36:10
回答 1查看 1.8K关注 0票数 2

我很难找到一种方法来返回一个带有用户刚刚触摸的位置的经度和纬度的GeoPoint。我已经看到和阅读了大量的例子,它们通过重写dispatchTouchEvent()来显示吐司中的经度和纬度。我认为这不适用于我的情况,原因如下。

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

我在使用dispatchTouchEvent()时看到的唯一变通方法是:

如果该按钮已被单击,则写入共享首选项。然后在dispatchTouchEvent()中检查是否已单击该按钮。如果尚未单击,则不执行任何操作。如果单击了它,则将经度和纬度写入共享首选项,然后从共享首选项中读取它们,并以不同的方法创建一个GeoPoint。

我不觉得这是一个非常优雅的想法。我觉得应该有一种更干净的方式来做这件事(就像以某种方式只返回一个地理位置)。

我希望这能有一点意义。我会尽力回答我能回答的任何问题。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-02 13:04:22

我刚刚读了你的question..so的标题,如果我回答错了,请原谅。

代码语言:javascript
运行
复制
    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;
        }
    });
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7975862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档