Quelqu'un sait-il comment ajouter un extrait de code multiligne au marqueur Google Maps? C'est mon code pour ajouter des marqueurs:
map.getMap().addMarker(new MarkerOptions()
.position(latLng()).snippet(snippetText)
.title(header).icon(icon));
Je veux que l'extrait ressemble à ceci:
| HEADER |
|foo |
|bar |
mais lorsque j'essaie de définir snippetText sur "foo\n bar", je ne vois que foo bar
et je ne sais pas comment le rendre multiligne. Pouvez-vous m'aider?
Il semble que vous deviez créer votre propre contenu de "fenêtre d'information" pour que cela fonctionne:
Créez une implémentation de InfoWindowAdapter
qui remplace getInfoContents()
pour renvoyer ce que vous voulez entrer dans le cadre InfoWindow
Appelez setInfoWindowAdapter()
sur votre GoogleMap
en passant une instance de votre InfoWindowAdapter
Cet exemple de projet illustre la technique. Remplacement de mes extraits avec "foo\nbar"
traite correctement la nouvelle ligne. Cependant, plus probablement, vous ne ferez que mettre en page une disposition qui évite d'avoir à utiliser la nouvelle ligne, avec des widgets TextView
distincts pour chaque ligne des résultats visuels souhaités.
J'ai fait de la manière la plus simple comme ci-dessous:
private GoogleMap mMap;
Alors que ajoutmarqueur sur Google Map:
LatLng mLatLng = new LatLng(YourLatitude, YourLongitude);
mMap.addMarker(new MarkerOptions().position(mLatLng).title("My Title").snippet("My Snippet"+"\n"+"1st Line Text"+"\n"+"2nd Line Text"+"\n"+"3rd Line Text").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
Après cela, mettez le code ci-dessous pour InfoWindowadaptateur sur Google Map:
mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker arg0) {
return null;
}
@Override
public View getInfoContents(Marker marker) {
LinearLayout info = new LinearLayout(mContext);
info.setOrientation(LinearLayout.VERTICAL);
TextView title = new TextView(mContext);
title.setTextColor(Color.BLACK);
title.setGravity(Gravity.CENTER);
title.setTypeface(null, Typeface.BOLD);
title.setText(marker.getTitle());
TextView snippet = new TextView(mContext);
snippet.setTextColor(Color.GRAY);
snippet.setText(marker.getSnippet());
info.addView(title);
info.addView(snippet);
return info;
}
});
J'espère que cela vous aidera.
S'appuyant sur réponse de Hiren Patel comme Andrew S l'avait suggéré:
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;
}
});