0

我目前正在使用 osmdroid jar 3.0.1,并且我在“可拖动空间”内有一个 MapView(您可以在屏幕之间滑动的视图)。我在底部有一个栏,允许用户在空间之间滑动,如果触摸事件发生在该区域之外,我调用 mapView.onTouchEvent(event)。

这曾经在 3.0.1 中运行良好,但我在 osmdroid 3.0.4 中尝试过,它似乎只适用于垂直移动(我怀疑这与某些触摸倾斜设置有关)。

这是我的可拖动空间视图中的代码。

@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 地图?

我有一个演示项目来说明这个问题。完整的 Eclipse 项目在 github 上

您可以更改构建路径以使用 3.0.1 或 3.0.2 jar,地图在更大的空间内正确滚动,但更改为 3.0.3 或 3.0.4 并且任何横向移动都会被忽略。

任何指导将不胜感激。

PS,这是来自 OSMdroid 列表的交叉帖子。我希望这里有更多的读者。

4

1 回答 1

0

问题是 MapView.onTouchEvent 在 3.0.2 和 3.0.3 版本之间被重命名为 MapView.dispatchTouchEvent

于 2011-07-29T08:13:33.663 回答