0

現在osmdroidjar3.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.2jarを使用するようにビルドパスを変更すると、マップはより大きなスペース内で正しくスクロールしますが、3.0.3または3.0.4に変更すると、横方向の動きは無視されます。

任意のガイダンスをいただければ幸いです。

PS、これはOSMdroidリストからのクロスポストです。ここにもう少し読者がいることを願っています。

4

1 に答える 1

0

問題は、バージョン3.0.2と3.0.3の間で、MapView.onTouchEventの名前がMapView.dispatchTouchEventに変更されたことです。

于 2011-07-29T08:13:33.663 に答える