2010-05-07 70 views
2

我只是无法让它工作。我尝试使用下面的代码与onTouchEventand,它不起作用。 如果我在方法结束时返回true,我得到坐标的烤面包,但不能移动地图,如果我返回false,我可以移动地图,但不能在用户点击地图后显示烤面包。如果我得到它的权利,其他onTap方法仅用于点击叠加。 有没有人想出这个问题?单击MapView上的任意位置时获取坐标

 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); 
     } 

回答

6

使用dispatchTouchEvent()方法。有用。为什么因为MapActivity继承了Activity类中的dispatchTouch事件而不是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); 
} 
+0

它在模拟器中工作,但在我的英雄失败。我想这只是另一个英雄特定的错误:( – DixieFlatline 2010-05-07 10:20:32

+0

dispatchTouch事件没有在我的英雄上被发现, – DixieFlatline 2010-05-07 10:27:26

+0

它是由英雄的固件版本问题,这是API级别是3.但dispatchtouch在API级别4的事件方法,所以它不能工作。 – Praveen 2010-05-07 10:36:10

相关问题