Movimentazione onTouchEvent dentro una vista che risponde anche alla onTouchEvent (utilizzato per lavorare in osmdroid 3.0.2)
-
26-10-2019 - |
Domanda
Attualmente sto usando vaso osmdroid 3.0.1, e ho una MapView all'interno di un " Dragable Spazio " (una visione che si può scorrere tra le schermate). Ho un barra nella parte inferiore che permette il colpo all'utente tra gli spazi, e se l'evento si verifica tocco fuori di tale zona, ho chiamata mapView.onTouchEvent (evento).
Ciò usata per funzionare bene in 3.0.1, ma ho provato a osmdroid 3.0.4, ed è appare solo per il lavoro per il movimento verticale (che ho il sospetto è legato ad una certa regolazione tocco slop).
Ecco il codice dal mio punto di vista Dragable spazio.
@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);
}
Anche se questo è brutto (la vista deve essere passato un'istanza del MAP), ha fatto lavorare bene nelle versioni 3.0.1 e 3.0.2. Tuttavia, da quando 3.0.3 funziona più.
C'è un modo migliore per passare gli eventi touch per la mappa osmdroid ora?
Ho un progetto demo che illustra questo problema. L'eclissi completa progetto è su github .
È possibile modificare il percorso di generazione di utilizzare un barattolo 3.0.1 o 3.0.2, e la mappa scorre intorno correttamente all'interno dello spazio più grande, ma cambiando a 3.0.3 o 3.0.4 e qualsiasi movimento laterale viene ignorata.
Qualsiasi orientamento sarebbe molto apprezzato.
PS, questo è un post cross dalla lista osmdroid. Mi auguro che ci sono un paio di lettori qui.
Soluzione
Il problema era che MapView.onTouchEvent stato rinominato in MapView.dispatchTouchEvent tra le versioni 3.0.2 e 3.0.3