2010-05-07 72 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

相關問題