2017-08-11 2 views
0

Je travaille sur une application Android qui utilise Google Maps Android API.Je montre plusieurs marqueurs sur la carte et je veux montrer une étiquette à côté de chaque marqueur comme indiqué dans l'image ci-dessous, mais je suis incapable de savoir comment pour le faire.Comment afficher une étiquette à côté d'un marqueur sur Google Maps sur Android?

Image with google map marker and label

Je suis passé par la documentation Google Maps à https://developers.google.com/maps/documentation/android-api/map-with-marker mais je suis incapable de trouver des détails sur la façon de montrer l'étiquette dans ce manner.I ont essayé la propriété de titre qui ouvre une fenêtre contextuelle mais je besoin de cela pour montrer une vue détaillée (InfoWindow) sur mes marqueurs et je dois montrer le titre principal sans ouvrir le popup pour un marqueur

Une idée de comment je peux ajouter un marqueur de la manière montrée dans l'image jointe?

+1

vous pouvez vérifier ces https://stackoverflow.com/questions/17989389/label-at -le-haut-du-marqueur-dans-google-cartes-api-v2 –

+0

@NavjotSingh: J'ai vu ceux-ci.La propriété du titre montre seulement lorsque l'utilisateur clique sur le marqueur –

Répondre

1

Je ne sais pas si c'est ce que vous aviez à l'esprit, mais ici va

Créer l'objet MarkerOptions:

MarkerOptions options = new MarkerOptions() 
       .title(name) 
       .position(source) 
       .icon(gettIconFromDrawable(myMarker)) 
       .snippet("Briefly describe \nyour content here"); 

Puis ajouter le marqueur à la carte

Marker sourceMarker = mMap.addMarker(options); 

Créer InfoWindowAdapter pour accueillir plusieurs lignes dans l'extrait. (Original answer ici)

mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { 

      @Override 
      public View getInfoWindow(Marker arg0) { 
       return null; 
      } 

      @Override 
      public View getInfoContents(Marker marker) { 

       Context context = getApplicationContext(); //or getActivity(), YourActivity.this, etc. 

       LinearLayout info = new LinearLayout(context); 
       info.setOrientation(LinearLayout.VERTICAL); 

       TextView title = new TextView(context); 
       title.setTextColor(Color.BLACK); 
       title.setGravity(Gravity.CENTER); 
       title.setTypeface(null, Typeface.BOLD); 
       title.setText(marker.getTitle()); 

       TextView snippet = new TextView(context); 
       snippet.setTextColor(Color.GRAY); 
       snippet.setText(marker.getSnippet()); 

       info.addView(title); 
       info.addView(snippet); 

       return info; 
      } 
     }); 

Enfin, ajoutez cette propriété pour assurer le marqueur reste visible

sourceMarker.showInfoWindow(); 
+0

Merci pour votre aide. Mais en fait, j'ai mentionné dans la question que j'utilise déjà infoWindow pour afficher une vue personnalisée et détaillée de l'objet marqueur. Je dois montrer une étiquette de ligne pour tous les marqueurs sur la carte qui devrait être visible sans cliquer sur les marqueurs –

+0

C'est ce que le bit 'sourceMarker.showInfoWindow();' est censé faire –

+0

Mais mon exigence est légèrement différente. Il doit y avoir une étiquette visible pour tous les marqueurs et un clic sur un marqueur devrait afficher l'infoWindow détaillée avec les détails de ce marqueur –