web-dev-qa-db-fra.com

Google Android maps api v2 Afficher le titre du marqueur toujours

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?

34
Sercan Ozdemir
41
Anthony

Quelque chose comme ca:

googleMap.addMarker(new MarkerOptions()
    .position(new LatLng(latitude, longitude))
    .title("Your position")).showInfoWindow();
41
José De la O

Tu peux le faire:

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

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:

 preview

4
androidseb

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

1
Carlos Espinoza

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")));
}
0
Ben