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

StackOverflow https://stackoverflow.com/questions/6819543

  •  26-10-2019
  •  | 
  •  

Вопрос

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

Это было хорошо работало в 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 он больше не работает.

Есть ли лучший способ передать события Touch на карту OSMDroid?

У меня есть демонстрационный проект, который иллюстрирует эту проблему. Полный проект Eclipse на GitHub.

Вы можете изменить путь сборки, чтобы использовать бачку 3.0.1 или 3.0.2, и карта правильно прокручивается в большем пространстве, но изменение на 3,0,3 или 3.0.4, и любое боковое движение игнорируется.

Любое руководство будет высоко оценено.

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top