23

Ich habe einen Marker und wenn ich die Karte öffne, wird der Marker angezeigt. Wenn ich darauf klicke, werden der Titel und eine Symbolleiste angezeigt, die zwei Schaltflächen unten rechts auf der Karte enthält, über die ich Absichten aufrufen kann, um zum Marker zu navigieren oder ihn in Google Maps anzuzeigen. Ich möchte diese beim Öffnen der Karte automatisch anzeigen lassen, anstatt den Benutzer auf den Marker klicken zu müssen.Symbolleiste für Google Maps-Marker automatisch anzeigen

Wie folgt :-) ... enter image description here Ich kann nicht scheinen, wie man das macht.

Ich habe versucht:

// create marker 
MarkerOptions marker = new MarkerOptions().position(
     new LatLng(latitude, longitude)).title("title"); 

// adding marker 
googleMap.addMarker(marker).showInfoWindow(); 
googleMap.getUiSettings().setMapToolbarEnabled(true); 

Aber das zeigt nur den Marker Titel und eine Taste auf der Oberseite Recht auf meine Lage zu gehen, nicht die beide Symbolleiste Absicht Tasten auf der rechten unteren Ecke.

Gefällt Ihnen dieses :-(... enter image description here Ich bin ein wenig Ideen stecken

+0

Haben Sie eine gefunden Lösung? – Bunny

Antwort

5

die doc Zitiert:

In einer Lite-Modus Karte bleibt die Symbolleiste unabhängig die Aktionen des Benutzers. in einer voll interaktiven Karte, die Symbolleiste gleitet, wenn der Benutzer tippt eine Markierung und gleitet wieder aus, wenn der Marker nicht mehr im Fokus ist.

Sieht so aus, als ob es keine Möglichkeit gibt, die Symbolleiste in Ihrem Fall zu erhalten, da es sich um eine interaktive Karte handelt. Vielleicht möchten Sie mit Lite-Modus, um zu versuchen, ob das eine Anforderung ist: https://developers.google.com/maps/documentation/android/lite

Auch bei Ihrem Code suchen:

// create marker 
MarkerOptions marker = new MarkerOptions().position(
     new LatLng(latitude, longitude)).title("title"); 

// adding marker 
googleMap.addMarker(marker).showInfoWindow(); 
googleMap.getUiSettings().setMapToolbarEnabled(true); 

Die letzte Zeile: googleMap.getUiSettings().setMapToolbarEnabled(true); ist überflüssig, wenn Sie explizit auf false gesetzt werden vorher. Die doc Staaten:

Legt die Präferenz für, ob die Karte Toolbar aktiviert werden soll oder deaktiviert. Wenn aktiviert, sehen Benutzer eine Leiste mit verschiedenen kontextabhängigen Aktionen , einschließlich "diese Karte in der Google Maps App " und "finden Sie eine Wegbeschreibung zum markierten Marker in der Google Maps App".

Standardmäßig ist die Kartensymbolleiste aktiviert.

Der Link: https://developer.android.com/reference/com/google/android/gms/maps/UiSettings.html#setMapToolbarEnabled(boolean)

Hoffnung, das hilft.

12

Das Overlay, das beim Klicken auf einen Marker angezeigt wird, wird implizit erstellt und sofort zerstört. Sie können dies (noch) nicht manuell anzeigen.

Wenn Sie diese Funktionalität haben müssen, können Sie ein Overlay über Ihre Karte mit 2 ImageViews erstellen und entsprechende Absichten nennen, wenn sie angeklickt sind:

// Directions 
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(
     "http://maps.google.com/maps?saddr=51.5, 0.125&daddr=51.5, 0.15")); 
startActivity(intent); 
// Default google map 
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(
     "http://maps.google.com/maps?q=loc:51.5, 0.125")); 
startActivity(intent); 

Hinweis: Sie können die Koordinaten ändern müssen, basierend auf Marker getPosition() und der Standort des Benutzers.

Jetzt, um das Standard-Overlay auszublenden, müssen Sie nur noch true in OnMarkerClickListener zurückgeben. Auch wenn Sie die Fähigkeit verlieren, werden InfoWindows und Mitte-Kamera auf der Markierung zu zeigen, können Sie das einfach genug nachahmen:

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
    @Override 
    public boolean onMarkerClick(Marker marker) { 
     marker.showInfoWindow(); 
     mMap.animateCamera(CameraUpdateFactory.newLatLng(marker.getPosition())); 
     return true; 
    } 
}); 
1

eine DialogFragment zeigen statt das Infofenster und behandelt alles drin.

@Override 
public boolean onMarkerClick(Marker marker) { 
    FragmentManager fm = getSupportFragmentManager(); 
    DialogFragment markerWebView = DialogFragment(); 
    mMap.animateCamera(CameraUpdateFactory.newLatLng(marker.getPosition())); 
    markerWebView.show(fm, "fragment_marker"); 
    return true; 
} 

OR

Verwendung der Markierung klickt ein Overlay ein/auszuschalten ein facsimile of a Google map button

mMap.setOnMarkerClickListener(this); 
mMap.setOnInfoWindowClickListener(this); 


@Override 
public boolean onMarkerClick(Marker marker) { 
    //here turn on the overlays for nav turns etc. for this marker. 
    return false 
} 

@Override 
public void onInfoWindowClick(Marker marker) { 
    //here turn off the overlays for nav turns etc. 
    marker.hideInfoWindow(); 
} 
1

verwenden, wenn mich nicht alles täuscht Sie die beiden Tasten angezeigt werden soll, die die im Zusammenhang Marker auf der rechten unteren Seite der Karte und diese Tasten hat eine gewisse Abhängigkeit von der Markierung, wenn ich true, so müssen Sie nur eine neue Methode wie Code unten implementieren und rufen Sie einfach diese Methode auf erstellen und sicher in Ihrem Marker klicken Listener

@Override 
public void markerIntentButtonShow(Marker marker) { 
     //setvisible(true) to your side buttons or call some Intent 
     Intent i = new Intent(getActivity(), MarkerViewDetails.class); 
     i.putExtra("marker_snippet", marker.getSnippet()); 
     startActivity(i); 
} 

und die Methode in Ihrem Klick-Listener eine Feature-Anfrage

 googleMap 
       .setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 

        @Override 
        public void onInfoWindowClick(Marker marker) { 

          markerIntentButtonShow(marker); 
        } 
       }); 

und in Ihrem onCreateView

MarkerOptions marker = new MarkerOptions().position(
     new LatLng(latitude, longitude)).title("title"); 
googleMap.addMarker(marker).showInfoWindow(); 
markerIntentButtonShow(marker); 
2

ich ein ähnliches Problem hatte ..... wenn es Ihnen gut geht, wenn Sie den Benutzer nicht in der Karte browsen und sich nur auf Ihren Marker konzentrieren, y ou lite-mode Karte verwenden kann .... Zitat von der Dokumentation

In einer lite-mode Karte bleibt die Symbolleiste unabhängig von den Aktionen des Benutzers. In einer vollständig interaktiven Karte wird die Symbolleiste eingeblendet, wenn der Benutzer auf einen Marker tippt und wieder aus dem Objekt ausschaut, wenn der Marker nicht mehr im Fokus ist.

wieder von docs

auch standardmäßig, wenn ein Benutzer die Karte tippt, beginnt die API die Google Maps Mobile App. Sie können dies überschreiben, indem Sie GoogleMap.setOnMapClickListener() verwenden, um Ihren eigenen Listener festzulegen. Sie können auch disable auf Ereignisse in der Karte klicken, indem Sie setClickable() für die Ansicht aufrufen, die MapView oder MapFragment enthält.

1

Für die Symbolleiste, die Sie in rot umrandet haben, können Sie den setMapToolbarEnabled() method in UISettings

Aus der Dokumentation unter Verwendung deaktivieren:

die Präferenz-Sets für, ob die Karte Toolbar aktiviert werden soll oder deaktiviert . Wenn aktiviert, sehen Benutzer eine Leiste mit verschiedenen kontextabhängigen Aktionen , einschließlich "diese Karte in der Google Maps App " und "finden Sie eine Wegbeschreibung zum markierten Marker in der Google Maps App".

Codebeispiel die beiden Tasten zu deaktivieren:

//Disable Map Toolbar: 
mMap.getUiSettings().setMapToolbarEnabled(false); 

Gerade falls Sie auch über die Zoom-Tasten fragen wurden, können Sie sie wie folgt deaktivieren:

mMap.getUiSettings().setZoomControlsEnabled(false); 
Verwandte Themen