J'ai un Google Maps v2 dans mon application Android et quelques marqueurs dessus. Lorsque l'utilisateur clique sur l'un de ces marqueurs, un menu contextuel apparaît. Comment puis-je afficher ces titres toujours sans clic de l'utilisateur?
Il suffit d'appeler Marker.showInfoWindow();
. Voir https://developers.google.com/maps/documentation/Android/marker#info_windows et https://developers.google.com/maps/documentation/Android/reference/com/google/Android./gms/maps/model/Marker # showInfoWindow ()
Quelque chose comme ca:
googleMap.addMarker(new MarkerOptions()
.position(new LatLng(latitude, longitude))
.title("Your position")).showInfoWindow();
Tu peux le faire:
Marker marker = mMap.addMarker(new MarkerOptions().position(currentPosition).title("Your text"));
marker.showInfoWindow();
Pour afficher les titres des marqueurs sur la carte autour des marqueurs, aucune des solutions que j'ai trouvées sur Internet n'a fonctionné pour moi. J'ai donc retroussé mes manches et réalisé cette bibliothèque qui résout ce problème pour moi. 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:
Je ne suis pas très bon dans certaines implémentations mais voici mon code:
public BitmapDescriptor getBitmapFromView(String title) {
View view = LayoutInflater.from(activity.getApplicationContext()).inflate(R.layout.marker_tooltip, null);
((TextView) view.findViewById(R.id.tooltips_title)).setText(title);
//Get the dimensions of the view. In my case they are in a dimen file
int width = activity.getResources().getDimensionPixelSize(R.dimen.tooltips_width);
int height = activity.getResources().getDimensionPixelSize(R.dimen.tooltips_height);
int measuredWidth = View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY);
int measuredHeight = View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY);
view.measure(measuredWidth, measuredHeight);
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
return BitmapDescriptorFactory.fromBitmap(bitmap);
}
...
marker.setIcon(getBitmapFromView(marker.getTitle()));
...
J'ai implémenté cela dans un fragment d'une application cartographique avec quelques variantes. Par exemple, avec une fenêtre d’information personnalisée et certains événements sur la carte, mais sa mise en œuvre était nécessaire pour afficher tous les titres de marqueur en même temps. Faites-moi savoir si cela vous a été utile aussi
L'ACTIVITÉ de la variable "activity.getResources (). getDimensionPixelSize (R.dimen.tooltips_width)" est une propriété du fragment
Je suis peut-être un peu en retard pour répondre à cette question, mais le code ci-dessous fonctionne pour moi:
// ajoute cette bibliothèque
implementation 'com.google.maps.Android:android-maps-utils:0.5'
// utilise ensuite la méthode ci-dessous
public void makersMaker(GoogleMap googleMap){
IconGenerator iconFactory = new IconGenerator(this);
Marker marker1 = googleMap.addMarker(new MarkerOptions().position(newLatLng(-1.3177336,36.8251902));
marker1.setIcon(BitmapDescriptorFactory.fromBitmap(iconFactory.makeIcon("Marker 1")));
Marker marker2 = googleMap.addMarker(new MarkerOptions().position(new LatLng(-1.2857399,36.8214088)));
marker2.setIcon(BitmapDescriptorFactory.fromBitmap(iconFactory.makeIcon("Marker 2")));
}