2011-07-25 27 views
0

我目前使用osmdroid jar 3.0.1,並且我有一個 「Dragable Space」(您可以在屏幕之間滑動)。 我在底部有一個欄,讓用戶在空間之間滑動, ,如果觸摸事件發生在該區域之外,我將調用 mapView.onTouchEvent(event)。處理onTouchEvent內部也響應onTouchEvent的視圖(用於在OSMdroid 3.0.2中工作)

這用於在3.0.1,但我嘗試在osmdroid 3.0.4,它只 似乎只適用於垂直運動(我懷疑是相關的 某些觸摸slop設置)。

以下是我的可拖動空間視圖中的代碼。

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    // Check if the current space is the Map space and we are over the map 
    // difference is the Y value between the top and bottom of the map area. 
    if (this.mCurrentScreen == 1 
        && event.getY() >= topY && event.getY() <= difference){ 
      Log.d(TAG, "touch received inside Map Area"); 
      // Pass the event directly to the mapView. 
      return mOsmv.onTouchEvent(event); 
    } 
    Log.d(TAG, "touch received outside Map Area"); 
    return super.onTouchEvent(event); 
} 

雖然這是討厭(的觀點,必須通過 地圖的實例),但它確實在3.0.1和3.0.2版本,做工精細。但是,由於 3.0.3它不再有效。

現在有更好的方法將觸摸事件傳遞給osmdroid映射嗎?

我有一個演示項目,說明了這個問題。全蝕 項目是on github

您可以將構建路徑更改爲使用3.0.1或3.0.2 jar,並且該映射在較大空間內正確滾動,但更改爲3.0.3或3.0.4以及忽略橫向移動。

任何指導將不勝感激。

PS,這是來自OSMdroid列表的交叉帖子。我希望這裏有更多的讀者。

回答

0

問題在於MapView.onTouchEvent在版本3.0.2和3.0.3之間重命名爲MapView.dispatchTouchEvent