webentwicklung-frage-antwort-db.com.de

Zeigt den Titel der Kartenmarkierung immer in Android an

Ich füge GoogleMap die Standardmarkierung folgendermaßen hinzu:

GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.editMapMap)).getMap();

MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(currentLocation.getCoordinate());
markerOptions.title(Utils.getLocationString(currentLocation.getCoordinate()));
markerOptions.snippet("Blah");

locationMarker = map.addMarker(markerOptions);
locationMarker.setDraggable(true);

Wie kann ich Marker und Titel immer ohne Berührung anzeigen lassen? Ich möchte es auch deaktivieren, sie bei Berührung auszublenden.

35
Misha

Es ist sehr leicht:

locationMarker.showInfoWindow();
87
JerabekJakub

Es gibt zwei Methoden zum Anzeigen und Ausblenden der Marker. Der boolesche Rückgabewert verhindert einfach das Auftreten des Standardverhaltens (false) oder lässt es zu (true). Mit anderen Worten, es informiert das System, ob Sie das Ereignis konsumiert haben oder nicht. Siehe Google API-Referenz .

private GoogleMap.OnMarkerClickListener onMarkerClickedListener = new GoogleMap.OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(Marker marker) {
        if (marker.isInfoWindowShown()) {
            marker.hideInfoWindow();
        } else {
            marker.showInfoWindow();
        }
        return true;
    }
};

mGoogleMap.setOnMarkerClickListener(onMarkerClickedListener);
4
shredder

verwenden Sie showInfoWindow() und fügen Sie den Marker wie folgt hinzu.

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

Geben Sie einfach false für onMarkerClickListener zurück, wenn Sie true zurückgeben, wird die infoWindow angezeigt.

Titel ausblenden, wenn Sie auf die Markierung klicken:

map.setOnMarkerClickListener(this);
...

@Override
public boolean onMarkerClick(Marker arg0) {     
  Log.i(TAG,"marker arg0 = "+arg0);               
  return false;
}

Wenn wir den wahren Titel zurückgeben, wird er angezeigt. Andernfalls wird der falsche Titel nicht angezeigt.

3
sandeepmaaram

Warte aber hier ist meine Antwort:

In der Dokumentation steht ein Text, der besagt, dass das Infofenster nacheinander angezeigt wird. Es gibt also keine Möglichkeit, dies zu tun:

"In einem Infofenster können Sie dem Benutzer Informationen anzeigen, wenn er auf eine Markierung tippt.Es wird jeweils nur ein Infofenster angezeigt. Wenn ein Benutzer auf eine Markierung klickt Das aktuelle Infofenster wird geschlossen und Das neue Infofenster wird angezeigt. Wenn der Benutzer auf eine Markierung klickt, die derzeit ein Infofenster anzeigt, wird das Infofenster geschlossen. öffnet."

1
Pedro Massango

Ich weiß, dass diese Frage alt ist, aber ich werde meine Antwort hier posten, falls sie jemandem hilft.

Infofenster würden für meinen Fall nicht funktionieren, und ich wollte, dass die Titel nur angezeigt werden, wenn Platz vorhanden ist, und sich möglicherweise verstecken, wenn nicht genügend Platz für die Anzeige vorhanden ist, damit sie sich nicht überlappen.

Ich habe im Internet keine Lösung gefunden, also habe ich die Ärmel hochgekrempelt und diese Bibliothek erstellt, die mein Problem löst. Hoffentlich hilft sie auch anderen:

https://github.com/androidseb/Android-google-maps-floating-marker-titles

Hier ist eine Vorschau, wie es funktioniert:

 preview

0
androidseb