5

Chcę przenieść kamerę do pozycji, aby pasowała do LatLngBounds w odniesieniu do wysokości znacznika. Do tej pory jestem w stanie na dopasowanie kotwice markerów z tym kodem:Przesuń pozycję kamery, aby dopasować LatLngBounds w odniesieniu do wysokości znacznika

LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
for (Marker marker : markerList) { 
    builder.include(marker.getPosition()); 
} 
LatLngBounds bounds = builder.build(); 

int padding = getActivity().getResources().getDimensionPixelSize(R.dimen.home_map_padding); // offset from edges of the map in pixels 
cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, padding); 
mGoogleMap.animateCamera(cameraUpdate); 

Produkuje wyjście tak: my output so far Jak widać istnieje pusta przestrzeń na dole (jest int padding). Chciałbym mieć padding być równa tak:

enter image description here

Odpowiedz

4

Twoje pytanie jest podobny do zamieszczonych tu:

Defining a CameraUpdate with LatLngBounds with different padding values

Rozwiązaniem jest ustawiony górny wyściółkę rzeczywistego GoogleMap do wysokości ikonę znacznika.

Coś jak to zrobi:

Drawable drawable = <YOUR DRAWABLE HERE>; 
final int padding = drawable.getIntrinsicHeight(); 
map.setPadding(0, padding, 0, 0); 

Wygląda na to z mojego niestandardowego znacznika obrazu (władcy włożona do porównania):

enter image description here

+0

W rzeczywistości moje pytanie jest duplikatem. Ale w każdym razie uratowałeś mój dzień (lub nawet kilka). –

+0

@ MarianPaździoch Cieszę się, że moja odpowiedź była pomocna. Sam szukałem rozwiązania i znalazłem twoje pytanie (i drugie). – Baz

+0

Niepoprawny, ponieważ wskaźnik automatycznie przesuwa się – delive

0

ja nie wierzę, że jest jakiś sposób, aby uzyskać wysokość znacznika, chyba że używasz niestandardowego znacznika. Jednak ze względu na to, że znaczniki pozostają w tym samym rozmiarze, można przewijać widok kamery o określoną wartość.

Będziesz musiał trochę rozegrać, ile przewinąć, ale gdy już uzyskasz wartość, możesz skalować ją na podstawie gęstości ekranu, jeśli to konieczne.

+0

Problemem jest: Wiem wysokość znacznika (w piksele), ale nie wiem, jaki będzie zoom mapy po animacji, więc nie mogę odzwierciedlić tej wysokości w padding tutaj: https://developer.android.com/reference/com/google/android/gms/maps/CameraUpdateFactory .html # newLatLngBounds (com.google.android.gms.maps.model.LatLngBounds,% 20int) –