23

Mam znacznik i po otwarciu mapy pokazuje znacznik. Kiedy go klikam, pokazuje tytuł i pasek narzędzi, który zawiera dwa przyciski w prawym dolnym rogu mapy, które pozwalają mi uruchamiać intencje nawigacji do znacznika lub pokazywać go w mapach google. Chciałbym, aby były wyświetlane automatycznie po otwarciu mapy, a nie po kliknięciu znacznika przez użytkownika.Automatycznie wyświetlaj pasek narzędzi do znaczników Google Maps

W ten sposób :-) ... enter image description here Nie mogę wydawać się wypracować, jak to zrobić.

Próbowałem:

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

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

Ale to tylko pokazuje tytuł markera i przycisk w prawym górnym rogu, aby przejść do mojej lokalizacji nie dwa przyciski paska narzędzi zamiarom w prawym dolnym rogu.

Ci się to :-(... enter image description here Jestem trochę zatrzymany jakieś pomysły

+0

Znalazłeś dowolny rozwiązanie ? – Bunny

Odpowiedz

5

Cytowanie doc:

Na mapie lite-mode, pasek narzędzi utrzymuje się niezależnie od działania użytkownika. z mapą w pełni interaktywny, szkiełka pasku narzędzi, gdy użytkownik krany marker i wysuwa się ponownie, gdy znacznik nie jest już w centrum uwagi.

Widoki takie jak nie ma możliwości utrzymywania paska narzędzi w twoim przypadku, ponieważ jest to interaktywna mapa. Można spróbować użyć Lite-tryb, jeśli jest to wymagane: https://developers.google.com/maps/documentation/android/lite

Również patrząc na kodzie:

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

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

Bardzo ostatnia linia: chyba, że ​​są wyraźnie ustawienie go na false googleMap.getUiSettings().setMapToolbarEnabled(true); jest zbędny uprzednio. Dokument stwierdza:

Ustawia, czy pasek narzędzi Mapa powinna być włączony, czy wyłączony. Jeśli ta opcja jest włączona, użytkownicy zobaczą pasek z różnymi zależnymi od kontekstu operacjami, w tym "otwórz tę mapę w aplikacji Google Maps " i "znajdź trasę do podświetlonego znacznika w aplikacji Google Maps ".

Domyślnie pasek narzędzi Mapa jest włączony.

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

Nadzieja to pomaga.

12

Nakładka, która pojawia się po kliknięciu znacznika, jest tworzona i niszczona niejawnie na miejscu. Nie możesz tego ręcznie pokazać (jeszcze).

Jeśli musisz mieć tej funkcji, można utworzyć nakładkę nad mapy z 2 ImageViews i wezwać odpowiednie intencje, gdy są one kliknięty:

// 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); 

Uwaga: trzeba zmienić współrzędne na podstawie Marker's getPosition() i lokalizacja użytkownika.

Teraz, aby ukryć domyślną nakładkę, wszystko, co musisz zrobić, to zwrócić wartość true w OnMarkerClickListener. Chociaż stracisz możliwość pokazania InfoWindows i środkową aparat markera, można naśladować, że wystarczy po prostu:

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

Pokazuj DialogFragment zamiast okno informacyjne i obsługiwać wszystko w nim.

@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; 
} 

LUB

użycie znacznika kliknie obrócić nakładkę on/off za pomocą 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

jeśli się nie mylę chcesz pokazać dwa przyciski, które związane do znacznik po prawej stronie mapy i te przyciski mają pewną zależność od znacznika, jeśli jestem prawdą, więc musisz po prostu zaimplementować nową metodę, taką jak poniższy kod, i po prostu wywołać tę metodę na tworzenie i na pewno w odbiorniku znacznika click

@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); 
} 

i wywołać metodę w swojej click słuchacza

 googleMap 
       .setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 

        @Override 
        public void onInfoWindowClick(Marker marker) { 

          markerIntentButtonShow(marker); 
        } 
       }); 

iw swoim onCreateView

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

miałem podobny problem ..... jeśli jesteś w porządku, nie pozwalając użytkownikowi przeglądać mapy i po prostu skupić się na swoim znaczniku, y ou mogą korzystać lite-mode mapę .... cytat z dokumentacji

w A lite-mode mapie, pasek narzędzi utrzymuje się niezależnie od działań użytkownika. W pełni interaktywnej mapie pasek narzędzi przesuwa się, gdy użytkownik dotknie znacznika i ześlizgnie się ponownie, gdy znacznik nie jest już ostry.

ponownie od docs

Również domyślnie, gdy użytkownik kliknie na mapę, API Map Google uruchamia aplikację mobilną. Możesz to zmienić, używając GoogleMap.setOnMapClickListener(), aby ustawić własny program nasłuchujący. Możesz także klikać zdarzenia na mapie, wywołując funkcję setClickable() w widoku zawierającym MapView lub MapFragment.

1

Na pasku zostały przedstawione w kolorze czerwonym, można ją wyłączyć za pomocą setMapToolbarEnabled() method in UISettings

Z dokumentacji:

Ustawia preferencje czy mapa Pasek powinien być włączony lub niepełnosprawnych . Jeśli ta opcja jest włączona, użytkownicy zobaczą pasek z różnymi zależnymi od kontekstu operacjami, w tym "otwórz tę mapę w aplikacji Google Maps " i "znajdź trasę do podświetlonego znacznika w aplikacji Google Maps ".

przykład kod, aby wyłączyć dwa przyciski:

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

Tylko w przypadku, gdy zostały również zastanawiać przycisków zbliżenia, możesz wyłączyć je tak:

mMap.getUiSettings().setZoomControlsEnabled(false);