Ich habe eine google maps v2 in meiner Android-Anwendung und einige Markierungen darauf. Wenn der Benutzer auf eine dieser Markierungen klickt, erscheint ein Titel-Popup. Wie kann ich diese Titel immer ohne User-Klick anzeigen lassen?
Rufen Sie einfach Marker.showInfoWindow();
auf. Siehe https://developers.google.com/maps/documentation/Android/marker#info_windows und https://developers.google.com/maps/documentation/Android/reference/com/google/Android/gms/maps/model/Marker # showInfoWindow ()
Sowas in der Art:
googleMap.addMarker(new MarkerOptions()
.position(new LatLng(latitude, longitude))
.title("Your position")).showInfoWindow();
Du kannst das:
Marker marker = mMap.addMarker(new MarkerOptions().position(currentPosition).title("Your text"));
marker.showInfoWindow();
Da ich Markentitel auf der Karte um die Markierungen herum angezeigt habe, funktionierte keine der Lösungen, die ich im Internet gefunden hatte, für mich. Deshalb habe ich die Ärmel hochgekrempelt und diese Bibliothek erstellt, die dieses Problem für mich löst. Hoffentlich hilft sie auch anderen:
https://github.com/androidseb/Android-google-maps-floating-marker-titles
Hier ist eine Vorschau, wie es funktioniert:
Ich bin nicht so gut in einer Implementierung, aber hier ist mein 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()));
...
Ich habe dies in einem Fragment in einer Karten-App mit einigen Variationen implementiert. Beispielsweise mit einem benutzerdefinierten Infofenster und einigen Ereignissen auf der Karte, deren Implementierung jedoch erforderlich war, um alle Markentitel gleichzeitig anzuzeigen. Lass mich wissen, ob es auch für dich hilfreich war
Die ACTIVITY von "activity.getResources (). getDimensionPixelSize (R.dimen.tooltips_width)" ist eine Eigenschaft im Fragment
Vielleicht komme ich zu spät, um diesen zu beantworten, aber der folgende Code funktioniert für mich:
// füge diese Bibliothek hinzu
implementation 'com.google.maps.Android:android-maps-utils:0.5'
// Dann verwende die Methode unten
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")));
}