2010-09-21 10 views
0

Je développe une application de cartographie Android et j'ai réussi à utiliser le tutoriel ItemizedOverlay de Google dans mon code. Je trace gentiment mon petit cercle sur la carte. Cependant, je voudrais étiqueter mon petit symbole avec son titre - tout le temps. Je vais laisser tomber quelques symboles différents sur ma carte et la possibilité d'afficher leurs étiquettes serait une grande aide. J'ai fait fonctionner la méthode onTap, mais quand vous appuyez sur l'écran, elle prend en charge tout l'affichage - ce qui n'est pas très utile.Android Mapping Overlay Question

Je n'ai pas réussi à trouver quelque chose à ce sujet sur Internet, donc je ne suis pas optimiste, mais si quelqu'un a des suggestions, ce serait très apprécié.

Répondre

1

Je ne sais pas ce que onTap a à faire avec ceci ou ce que vous voulez dire par «il prend en charge l'ensemble de l'affichage», mais je pense que pour afficher les étiquettes, vous devrez les dessiner vous-même. Vous pourriez le faire de deux façons. L'un serait de remplacer directement la méthode ItemizedOverlay.draw, et parcourir chacun de vos GeoPoints et de dessiner le titre directement sur le Canvas avec un petit décalage à cet endroit. Une autre façon possible serait de retourner un marqueur personnalisé; Au lieu de simplement retourner le symbole, vous pouvez créer un Picture en dessinant le cercle puis en dessinant du texte à côté de celui-ci, et ensuite vous pourrez envelopper ceci dans un PictureDrawable et l'utiliser comme marqueur pour votre objet de superposition.

+0

onTap: Quand je tape sur le symbole tracé, le titre est affiché, mais d'une manière qui obscurcit la carte (essentiellement). A part ça, ça ne fait pas grand-chose je suppose, à part ça je suis sûr que les données sont dans l'application. Je vais prendre un coup – Rich

+0

Oups, je frappe retour avant que j'aie fini ... Continue: je verrai quoi Je peux faire avec ItemizedOverlay.draw, merci pour l'indice. – Rich

+0

Maintenant il est temps pour vous de m'apprendre ;-) - comment afficher le titre dans 'onTap'? Je fais cela aussi, mais j'ai dû faire tout ce travail supplémentaire où j'ai créé un 'TextView' et je change le' LayoutParams' sur la vue afin qu'il soit centré sur n'importe quel marqueur sur lequel l'utilisateur tape. Avez-vous trouvé un moyen d'avoir le recouvrement automatiquement le faire pour vous ?? –

0

méthode Mon onTap ressemble à ceci:

 
protected boolean onTap (int index) 
{ 
    OverlayItem item = mOverlays.get (index); 
    AlertDialog.Builder dialog = new AlertDialog.Builder (mContext); 

    dialog.setTitle (item.getTitle()); 
    dialog.setMessage (item.getSnippet()); 
    dialog.show(); 
    return true; 
} 

L'application appelante passe dans son contexte (ce) quand il instancie le recouvrement par élément. Je ne suis toujours pas sûr de ce que cela signifie, mais je sauvegarde le contexte transmis dans mContext, et l'utilise dans onTap(). Je ne peux pas vraiment m'en attribuer le mérite, naturellement, puisque quelqu'un d'autre a posté sur Internet. Il affiche les informations de l'Overlay sur l'écran, mais (malheureusement pour moi) pas d'une manière que je suis content.

Je suis en train de contourner la méthode draw, mais cela a été beaucoup interrompu et est encore à ses débuts. Je l'afficherai ici s'il y a un intérêt.

R.

+0

Mise à jour pour Neil: La méthode draw est surchargée et semble fonctionner correctement. Mon application attire joliment de petites étiquettes à côté de mes petits symboles et j'en suis très content. Faites-moi savoir si vous êtes intéressé par le code. – Rich

+0

Ah, je comprends maintenant, je n'avais pas réalisé que vous utilisiez un dialogue. Ravi de vous entendre, vous avez compris quelque chose qui fonctionne mieux! –