現在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リストからのクロスポストです。ここにもう少し読者がいることを願っています。