Manejo de OnTouchEvent dentro de una vista que también responde a OnTouchEvent (solía funcionar en Osmdroid 3.0.2)

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

  •  26-10-2019
  •  | 
  •  

Pregunta

Actualmente estoy usando OSMDroid Jar 3.0.1, y tengo un MapView dentro de un "Espacio dragable"(Una vista que puede deslizar entre pantallas). Tengo una barra en la parte inferior que permite al usuario deslizar entre los espacios, y si el evento táctil ocurre fuera de esa área, llamo mapView.onTouchEvent (evento).

Esto solía funcionar bien en 3.0.1, pero lo intenté en OSMDroid 3.0.4, y solo parece funcionar para el movimiento vertical (que sospecho que está relacionado con alguna configuración de pendiente táctil).

Aquí está el código desde mi vista espacial dragable.

@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);
}

Aunque esto es desagradable (la vista debe pasar una instancia del mapa), funcionó bien en las versiones 3.0.1 y 3.0.2. Sin embargo, desde 3.0.3 ya no funciona.

¿Hay una mejor manera de pasar eventos táctiles al mapa OSMDroid ahora?

Tengo un proyecto de demostración que ilustra este problema. El proyecto completo de eclipse es en Github.

Puede cambiar la ruta de compilación para usar un frasco 3.0.1 o 3.0.2, y el MAP se desplaza correctamente dentro del espacio más grande, pero cambia a 3.0.3 o 3.0.4 y se ignora cualquier movimiento lateral.

Cualquier orientación sería muy apreciada.

PD, esta es una publicación cruzada de la lista OSMDroid. Espero que haya algunos lectores más aquí.

¿Fue útil?

Solución

El problema era que MapView.onTouchEvent pasó a llamarse mapview.DispatchTouchEvent entre las versiones 3.0.2 y 3.0.3

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top