我目前正在使用 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 列表的交叉帖子。我希望这里有更多的读者。