【问题标题】:Android tap on map and get coordinatesAndroid点击地图并获取坐标
【发布时间】:2011-06-21 00:17:49
【问题描述】:

我正在尝试制作一个应用程序,一旦用户点击地图,它就会获取该特定点的坐标。

除其他外,我还读到:Get coordinates on tapping map in android

这似乎是最相关的帖子,但我想做的是能够点击地图上的任何位置,而不是标记/覆盖项目。事实上,我想在用户点击的特定点创建一个标记并获取它的坐标。

这可能吗?

【问题讨论】:

    标签: android overlay coordinates android-mapview google-maps-markers


    【解决方案1】:

    是的。其实the answer I gave in that other question就是你需要的。

    【讨论】:

    • 还没有尝试过,但似乎您正在将 onTouchEvent 方法添加到覆盖项目而不是地图本身..谢谢您的回复..
    • 好的,我收回 :) ...它工作得很好...太棒了!!!!再次感谢!!!!
    【解决方案2】:

    应该是微不足道的一点点数学。您可以使用getLatitudeSpan()getLongitudeSpan() 来获取可见地图的范围,并使用getMapCenter() 来查看中心点。只需将其映射到触摸事件的坐标即可。

    编辑:Mark 一如既往地有一个更优雅的解决方案。

    【讨论】:

    • 其实这个是读者投稿的,所以不能全功。
    【解决方案3】:

    您将需要覆盖 onTouchEvent()。

    我希望下面的代码可以帮助你...显示使用 onTouchEvent() 来当用户从地图上抬起手指...

    给定触摸的屏幕坐标,您可以使用 Projection(来自 MapView 上的 getProjection())将其转换为纬度和经度...

    @Override
            public boolean onTouchEvent(MotionEvent event, MapView mapView) 
            {   
                GeoPoint point_touch;
                MapController map_controller=mapView.getController();
                //---when user lifts his finger---
                if (event.getAction() == event.ACTION_UP) {                
                    point_touch = mapView.getProjection().fromPixels((int) event.getX(),(int) event.getY());                    
                    Log.i("Cordinates","Lattitude="+point_touch.getLatitudeE6() / 1E6 
                            +" Longitude="+point_touch.getLongitudeE6() /1E6  );
                    map_controller.animateTo(point_touch);
                    return true;
                }    
                else
                {
                    return false;
                }
    
             }
    

    【讨论】:

      猜你喜欢
      • 2011-05-09
      • 1970-01-01
      • 2015-03-09
      • 2013-05-15
      • 2019-08-03
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 2016-04-09
      相关资源
      最近更新 更多