2013-11-27 15 views
5

Chciałbym wiedzieć, czy w jakikolwiek sposób można ustawić różne wypełnienia z każdej witryny z granicami urządzeń dla Google.Zestaw obramowań mapy z różnymi wyściółkami

Ponieważ moja czarownica mpview pasuje do całej aktywności, ale mam MapOverlay (trochę tekstu w układzie liniowym z nietrwałym tłem) na dole 1/3 poza ekranem.

A teraz chcę powiększyć za pomocą granic mapy. Ale powinien mieć więcej padding od dołu, więc nie dostał się za moją mapOverlay.

używam tego kodu z wyściółką z 120.

final com.google.android.gms.maps.model.LatLngBounds.Builder bounds = new LatLngBounds.Builder(); 
bounds.include(pref.getSavedLatLng()); 
bounds.include(currentLatLng); 
map.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds.build(), 120)); 

Czy istnieje sposób ustawiania różnych Podkładki lub inne rozwiązanie tego problemu?

Dziękuję za pomoc i przepraszam za mój angielski.

+2

https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap#setPadding%28int,%20int,%20int,%20int%29 –

+0

@ MaciejGórski Dziękuję, że to działa – MEX

Odpowiedz

17

To jest starsze pytanie i być może osoba pytająca znalazła rozwiązanie, ale tutaj jest dla każdego, kto napotka ten sam problem w przyszłości. Ustawić indywidualny wyściółkę korzystając

googleMap.setPadding(left, top, right, bottom)

a następnie użyć

googleMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds.build(), 0))

Nie zapomnij ustawić Podkładki z powrotem na 0 (lub cokolwiek oni byli wcześniej) po zakończeniu. Ponieważ w przeciwieństwie do newLatLngBounds(), podkładki ustawione przez setPadding() są trwałe.

0

Pytanie jest stare, ale aby uzyskać więcej informacji, prosimy sprawdzić here.

Jeśli ograniczenie ma zostać zastosowane do określonej akcji, ustawienie dopełnienia mapy może nie być dobrym rozwiązaniem, ponieważ jest trwałe.

Zastosuj wypełnienie o wartości 100 lub większej, aby zobaczyć efekt na mapie. Bellow jest prostym przykładem.

final int MAP_BOUND_PADDING = 180; /* In dp */ 
LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
for (LatLng latLng : listLatLng) { //listLatLngis a list of latLng to bound. You can put two if you want. 
    builder.include(latLng); 
} 
LatLngBounds bounds = builder.build(); 
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, MAP_BOUND_PADDING); 
mMap.animateCamera(cu); 
Powiązane problemy