Обработка onTouchEvent внутри представления, которое также отвечает на onTouchEvent (используется для работы в OSMdroid 3.0.2)

В настоящее время я использую osmdroid jar 3.0.1, и у меня есть MapView внутри «Dragable Space " (представление, которое можно перемещать между экранами). У меня есть панель внизу, которая позволяет пользователю перемещаться между пробелами, и если событие касания происходит за пределами этой области, я вызываю mapView.onTouchEvent(event).

Раньше это хорошо работало в 3.0.1, но я пробовал в osmdroid 3.0.4, и оказалось, что это работает только для вертикального движения (что, как я подозреваю, связано с некоторой настройкой касания).

Вот код из моего представления Dragable Space.

@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, и карта правильно прокручивается внутри большего пространства, но при изменении на 3.0.3 или 3.0.4 любое боковое движение игнорируется.

Мы будем очень признательны за любые рекомендации.

PS, это кросспост из списка OSMdroid. Надеюсь, здесь есть еще несколько читателей.


person Net Wolf    schedule 25.07.2011    source источник


Ответы (1)


Проблема заключалась в том, что MapView.onTouchEvent был переименован в MapView.dispatchTouchEvent между версиями 3.0.2 и 3.0.3.

person Net Wolf    schedule 29.07.2011