4 votes

en utilisant OnTap(int i) avec plusieurs couches d'ItemizedOverlay

Je devais afficher de nombreux éléments superposés (environ 600, tous cliquables pour afficher des informations à leur sujet) sur la carte. Pour des raisons de performance, j'ai pensé qu'il serait judicieux de les regrouper dans différentes classes ItemizedOverlay, car chaque groupe affichera différents types d'informations à leur sujet. (En particulier, les éléments sont des aéroports, des VORs, des NDBs et d'autres choses concernant l'aviation).

Mon problème est que si je les sépare en classes et que je les montre, les performances sont super. La carte est fluide. Mais lorsque j'ajoute une deuxième couche par-dessus la première, les éléments de la première couche ne sont plus cliquables.

En lisant beaucoup, et en déboguant avec la méthode Log.i, j'ai réalisé que chaque couche est cliquée mais que seule la méthode OnTap(Geopoint point, MapView mapview) est appelée. L'appel à super.onTap(point, mapview) ne fonctionne pas. J'ai besoin de la méthode onTap(int index) pour identifier le marqueur. (J'ai les deux méthodes dans mes classes (après avoir lu beaucoup d'exemples)).

Alors, que dois-je faire ? Existe-t-il une méthode pour résoudre mon problème ? Je ne veux pas me lancer dans des approches lourdes comme la comparaison des coordonnées du clic avec celles de tous les éléments superposés pour trouver quelque chose de proche.

Merci d'avance.

7voto

Zaid Daghestani Points 4142

La façon dont onTop (et tout autre événement tactile fonctionne sur Android) est qu'il envoie un ping à tous les objets qui se trouvent aux coordonnées suivantes jusqu'à l'un des onTaps (ou tout autre événement tactile) renvoie vrai. Dans ce cas, votre méthode onTap(Geopoint point, MapView mapview) renvoie vrai. Cela consomme cet événement tactile et ne le laisse pas passer à d'autres événements onTap. Si vous faites en sorte que l'événement onTap renvoie false, les autres événements onTap seront activés. J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X