2011-04-15 2 views
4

Je développe une application pour mon campus des universités qui affiche le campus dans un MapView; Ensuite, l'utilisation de géopoints dessine les contours des bâtiments sur le campus sur la mapView en utilisant la méthode dessiner une classe qui s'étend Overlay. Il y a environ 50-60 bâtiments dessinés, résultant en une carte très laggy car la méthode de tirage est constamment tirée à plusieurs reprises. J'ai examiné mon problème et j'ai trouvé des personnes qui mentionnaient avoir dessiné les bâtiments sur une toile, mais je n'ai trouvé aucun bon exemple ni aucune information sur la façon de procéder pour cela. Quelqu'un peut-il me diriger dans la bonne direction sur la façon de réduire le décalage de la carte? La carte a l'air très bien mais le décalage tue juste son utilité.Cache ce qui est dessiner sur MapView dans Android

Merci!

+0

Chaque fois que vous déplacez la carte, elle redessine le bâtiment 50-60 dont vous parlez? – JQCorreia

+0

Je le crois; aussi quand vous changez les niveaux de zoom. – RyanG

+0

Vous voudrez peut-être consulter les exemples de code source ici: http://stackoverflow.com/questions/2176397/drawing-a-line-path-on-google-maps – Bachi

Répondre

2

Si vous avez tous les points organisés en polygones, vous pouvez dessiner des polygones sur une toile, puis les dessiner sur une superposition. Je pense que ce serait plus rapide.

Vous pouvez également toujours faire un calcul sur la partie du bâtiment qui doit être redessinée pour la position suivante et simplement changer cette partie du canevas.

Si vous avez déplacé des pixels (X, Y) à partir d'une position antérieure, déplacez le canevas existant vers la nouvelle position et dessinez simplement les nouvelles entités qui apparaissent sur la carte.

Ce n'est pas la solution optimale bien sûr, car ce type de mise en cache ne fonctionnerait pas avec le zoom.

J'espère que cela a aidé en quelque sorte! JQCorreia

+0

Je l'ai implémenté pour que lorsque la carte est zoomé dans une bonne quantité et seulement quelques bâtiments sont sur l'écran; il ne fait que dessiner ces bâtiments. Cela réduit énormément le retard, mais si vous faites un zoom arrière et que vous regardez tout le campus, le décalage est toujours là. Je n'ai pas encore essayé de dessiner sur une toile; mais je vais voir si ça aide du tout une fois que je peux le faire fonctionner. – RyanG

+0

Cela a-t-il fonctionné? Maintenant, je suis curieux parce que j'ai une mise en œuvre similaire à faire et aimerais beaucoup l'info. Merci d'avance – JQCorreia