web-dev-qa-db-fra.com

Toujours afficher le titre du marqueur de carte dans Android

J'ajoute le marqueur par défaut à Google Map de la manière suivante:

GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.editMapMap)).getMap();

MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(currentLocation.getCoordinate());
markerOptions.title(Utils.getLocationString(currentLocation.getCoordinate()));
markerOptions.snippet("Blah");

locationMarker = map.addMarker(markerOptions);
locationMarker.setDraggable(true);

Comment puis-je faire en sorte que marqueur affiche toujours le titre et l'extrait sans contact? Je voudrais aussi désactiver la dissimulation au toucher.

35
Misha

C'est très facile:

locationMarker.showInfoWindow();
87
JerabekJakub

Il existe deux méthodes pour afficher et masquer les marqueurs. La valeur de retour booléenne empêche simplement le comportement par défaut (false) ou le permet (true). En d'autres termes, il informe le système si vous avez consommé l'événement ou non. Voir Référence de Google API .

private GoogleMap.OnMarkerClickListener onMarkerClickedListener = new GoogleMap.OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(Marker marker) {
        if (marker.isInfoWindowShown()) {
            marker.hideInfoWindow();
        } else {
            marker.showInfoWindow();
        }
        return true;
    }
};

mGoogleMap.setOnMarkerClickListener(onMarkerClickedListener);
4
shredder

utilisez showInfoWindow() et ajoutez un marqueur comme ci-dessous.

Marker marker = mMap.addMarker(new MarkerOptions().position(currentPosition).title("Your text"));
marker.showInfoWindow();
3
Shailesh

Il suffit de retourner false pour onMarkerClickListener, si vous renvoyez true, affiche la infoWindow.

Pour masquer le titre quand on clique sur le marqueur:

map.setOnMarkerClickListener(this);
...

@Override
public boolean onMarkerClick(Marker arg0) {     
  Log.i(TAG,"marker arg0 = "+arg0);               
  return false;
}

Si nous retournons le vrai titre sera affiché, sinon si nous retournons le faux titre ne s'affichera pas.

3
sandeepmaaram

Tiens mais voici ma réponse:

Dans la documentation, il y a un texte disant que la fenêtre d'information est affichée une à la fois, il n'y a donc aucun moyen de le faire:

"Une fenêtre d’information vous permet d’afficher des informations à l’utilisateur quand il Appuie sur un marqueur.Une seule fenêtre d’information est affichée à la fois. Si un utilisateur , la fenêtre d’information actuelle sera fermée et la nouvelle fenêtre d’information sera affichée. Notez que si l’utilisateur clique sur un marqueur qui affiche actuellement une fenêtre d’information, cette fenêtre d’information. ouvre. "

1
Pedro Massango

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

Les fenêtres d'informations ne fonctionneraient pas pour mon cas et je voulais que les titres ne s'affichent que s'il y avait de la place, potentiellement cachés s'ils n'étaient pas assez de place pour qu'ils ne se chevauchent pas.

Je n’ai trouvé aucune solution sur Internet, j’ai 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