android - 单击 MapView 上的任意位置时获取坐标

标签 android android-mapview

我就是无法让这个工作。我尝试将下面的代码与 onTouchEventand 一起使用,但它不起作用。 如果我在方法结束时返回 true,我会得到带有坐标的 toast,但无法移动 map ,如果我返回 false,我可以移动 map ,但在用户单击 map 后无法显示 toast。如果我猜对了,另一个 onTap 方法仅用于单击叠加层。 有人弄清楚这个事情了吗?

        public boolean onTouchEvent(MotionEvent arg0, MapView arg1) {

       //super.onTouchEvent(arg0);


       int akcija = arg0.getAction(); 

        if(akcija == MotionEvent.ACTION_UP){
            if(!premik) {
                Projection proj = mapView.getProjection();
                GeoPoint loc = proj.fromPixels((int)arg0.getX(), (int)arg0.getY()); 
                String sirina=Double.toString(loc.getLongitudeE6()/1000000);
                String dolzina=Double.toString(loc.getLatitudeE6()/1000000);

                 Toast toast = Toast.makeText(getApplicationContext(), "Širina: "+sirina+" Dolzina: "+dolzina, Toast.LENGTH_LONG);
                toast.show();
            }
        }     

        else if (akcija == MotionEvent.ACTION_DOWN){

            premik= false;

        }
        else if (akcija== MotionEvent.ACTION_MOVE){             
            premik = true;
        }


        return false;
        //return super.onTouchEvent(arg0);
      }

最佳答案

使用dispatchTouchEvent()方法。有用。为什么是因为MapActivity从Activity类继承了dispatchTouchEvent而不是OnTouchEvent。检查这个documentation

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    int actionType = ev.getAction();
    switch (actionType) {
    case MotionEvent.ACTION_UP:
            Projection proj = mapView.getProjection();
            GeoPoint loc = proj.fromPixels((int)ev.getX(), (int)ev.getY()); 
            String longitude = Double.toString(((double)loc.getLongitudeE6())/1000000);
            String latitude = Double.toString(((double)loc.getLatitudeE6())/1000000);

             Toast toast = Toast.makeText(getApplicationContext(), "Longitude: "+ longitude +" Latitude: "+ latitude , Toast.LENGTH_LONG);
            toast.show();

    }

    return super.dispatchTouchEvent(ev);
}

关于android - 单击 MapView 上的任意位置时获取坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2787204/

相关文章:

ios - react native 不变违规 : Element type is invalid

android - 是否可以在 Android 上使 mapview 在没有 api key 的情况下工作?

java - 谷歌地图教程 : What is Context?

android - 尝试添加 Google map 时出错

android - 显示上传图片进度 Multipart

Android map 缩放以显示所有图钉

android - MediaStore.Audio.Artists 中没有 "number_of_albums column"

android - 系统中的动画加载图标在 Android 上生成 "Preview Window"

Java Android AlertDialogs 在信息窗口 OnClick 上显示谷歌地图 v2

java - 没有适合 makeText() 的方法 - Toast (Android)