web-dev-qa-db-fra.com

Marqueurs de carte avec du texte dans Google Maps Android API v2

J'ai publié ce message, mais il concerne l'API Google Maps obsolète.

http://tech.truliablog.com/2012/02/23/custom-map-markers-for-Android-google-maps/

Dans la nouvelle API, je ne trouvais pas de moyen facile de le faire. En fait, je ne pouvais pas le faire du tout. 

En gros, je veux avoir TextViews comme marqueur sur la carte avec 9Patch pouvant être dessiné comme arrière-plan du texte. Trulia le fait toujours avec la nouvelle API v2 dans son application actuelle. Tu peux le vérifier ici

Trulia current app

Comment puis-je faire ceci?

11
tasomaniac

Chris Broadfoot a créé une bibliothèque d’utilitaires qui fait exactement cela.

La bibliothèque est disponible ici: https://github.com/googlemaps/Android-maps-utils

Voir aussi cette courte vidéo: http://www.youtube.com/watch?v=nb2X9IjjZpM

33
MaciejGórski

Autant que je sache, ceci n'est pas actuellement pris en charge par Google Maps Api v2. Ce que vous pouvez faire, en revanche, consiste à créer dynamiquement le bitmap pour votre marqueur et à écrire la valeur que vous souhaitez afficher. en elle. Hélas, il peut facilement y avoir des problèmes de performances si vous avez beaucoup de broches.

Canvas canvas = new Canvas(bitmap);
canvas.drawText("Your text", textXOffset, textYOffset, mPictoPaint);
MarkerOptions options = new MarkerOptions().position([…]).icon(BitmapDescriptorFactory.fromBitmap(bitmapResult));
Marker newMarker = map.addMarker(options);

Notez que bitmap doit être mutable. Aussi, vous devrez redimensionner l'image de base (probablement en utilisant un 9.patch) selon vos besoins.

5
Nerkatel

Cela peut être réalisé simplement en utilisant cette bibliothèque utile fournie par Google.

IconGenerator icg = new IconGenerator(this);
icg.setColor(Color.GREEN); // green background 
icg.setTextAppearance(R.style.BlackText); // black text 
Bitmap bm = icg.makeIcon("200 mi");

Dans style.xml 

<style name="BlackText" parent="TextDefault">
    <item name="Android:textColor">@color/black</item>
</style>

http://googlemaps.github.io/Android-maps-utils/javadoc/

http://googlemaps.github.io/Android-maps-utils/

https://github.com/googlemaps/Android-maps-utils

5
Justcurious

Je sais que cette question est ancienne, mais je posterai ma réponse ici au cas où cela aiderait quelqu'un.

Aucune des solutions ci-dessus ne fonctionnait pour moi parce que

  • J'ai déjà des icônes personnalisées pour les marqueurs dans mon application

  • Mon application affiche potentiellement des milliers de titres de marqueurs différents, ce qui pose un problème de performances en créant autant d'images en mémoire.

  • Lorsque les icônes de marqueur deviennent plus grandes, la carte devient très rapidement illisible.

  • Je voulais que les titres ne s'affichent que s'il y a de la place, potentiellement cachés si pas assez de place pour afficher

Je n'ai trouvé aucune solution sur Internet, j'ai donc retroussé mes manches et créé cette bibliothèque qui résout mon problème. J'espère que cela aidera également les autres:

https://github.com/androidseb/Android-google-maps-floating-marker-titles

Voici un aperçu de son fonctionnement:

 preview

0
androidseb