2017-01-23 35 views
7

Próbuję ustawić lokalizację użytkownika na mapie tak, aby znajdowała się około 1/3 wysokości w górę od dołu ekranu, a gdy mapa obróci się, obróci się wokół tego punkt.Zmień Centrum przesunięć na Mapie Google

Najbliżej do osiągnięcia tego celu jest użycie metody setPadding(), jednak powoduje to, że mapa porusza się po obróceniu, ponieważ punkt środkowy "unosi się" w miejscu, w którym powinien być. Wygląda dość brzydko

int mapHeight = mapView.getHeight(); 
googleMap.setPadding(0, mapHeight/5, 0, 0); 

Czy istnieje lepszy sposób to zrobić?

Edit: Poradnik na zdjęciu poniżej

enter image description here

+0

Może to pomaga: http://stackoverflow.com/questions/41469392/lock-google-maps-on-users -location/41618422 # 41618422 –

+0

Nie widzę, jak ta odpowiedź pozwoli mi zablokować lokalizację użytkownika w miejscu innym niż na środku mapy. – Dportology

+0

Czy możesz wyjaśnić nieco lepiej, co próbujesz zrobić? Może obraz ... –

Odpowiedz

13

Nie trzeba Podkładki

Zmień MapPoint wartości X i Y, jak trzeba można nazwać to, gdzie chcesz! może być wewnątrz onLocationChanged jak changeOffsetCenter(location.getLatitude(),location.getLongitude());

public void changeOffsetCenter(double latitude,double longitude) { 
      Point mappoint = mGoogleMap.getProjection().toScreenLocation(new LatLng(latitude, longitude)); 
      mappoint.set(mappoint.x, mappoint.y-100); // change these values as you need , just hard coded a value if you want you can give it based on a ratio like using DisplayMetrics as well 
      mGoogleMap.animateCamera(CameraUpdateFactory.newLatLng(mGoogleMap.getProjection().fromScreenLocation(mappoint))); 
     } 

wyjściowa:

enter image description here

+0

jak używać dla dwóch punktów z LatLngBounds? – ZeroOne

+0

@ ZeroOne twoje pytanie nie jest jednoznacznie sprecyzowane proszę? możesz mieć jeden punkt centralny, o który prosisz? –

+0

w zasadzie, jak to zrobić dla wielu znaczników, które zmieniają pozycję na dole mapy? – ZeroOne