2013-05-03 13 views
45

Jak uzyskać bieżący poziom powiększenia jako liczbę całkowitą w GoogleMap. Muszę wziąć ten kod z GMaps v1.1:Google Maps V2 - Android - Uzyskaj bieżący poziom powiększenia

MapView mGoogleMapView; 

int zoomLevel = mGoogleMapView.getZoomLevel(); 

Zdaję sobie sprawę z metod getMinZoomLevel() i getMaxZoomLevel() jednak nie mogę znaleźć coś w dokumentacji Android GMap V2, które dadzą prąd Poziom przybliżenia. Czy ktoś ma jakieś wskazówki, jak to zrobić?

Każda pomoc zostanie doceniona.

Odpowiedz

148
GoogleMap map; 

....

float zoom = map.getCameraPosition().zoom; 
+7

To musi być zrobione na wątku UI, albo dostaniesz wyjątek! –

33

myślę OnCameraChangeListener rade ..

map.setOnCameraChangeListener(new OnCameraChangeListener() { 

    private float currentZoom = -1; 

    @Override 
    public void onCameraChange(CameraPosition position) { 
     if (position.zoom != currentZoom){ 
      currentZoom = position.zoom; // here you get zoom level 
     } 
    } 
}); 

Aktualizacja:

z Google Play usługi 9.4. 0 OnCameraChangeListener została wycofana i nie będzie już pracować soon.Alternately one zastąpione przez OnCameraMoveStarted Listener, OnCameraMoveListener, OnCameraMoveCancel edListener i OnCameraIdleListener.

Dzięki temu możemy użyć tutaj OnCameraIdleListener, aby uzyskać aktualny poziom powiększenia kamery. Próbka

Kod:

map.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() { 
    @Override 
    public void onCameraIdle() { 
     int zoomLevel = map.getCameraPosition().zoom; 
     //use zoomLevel value.. 
    } 
}); 
+1

Ta metoda została uznana za przestarzałą. Zastąpiony przez setOnCameraMoveStartedListener (GoogleMap.OnCameraMoveStartedListener), setOnCameraMoveListener (GoogleMap.OnCameraMoveListener), setOnCameraMoveCanceledListener (GoogleMap.OnCameraMoveCanceledListener) i setOnCameraIdleListener (GoogleMap.OnCameraIdleListener). –

+0

@NaszNjokaSr., Dzięki za troskę. Zaktualizowano odpowiednio. – ridoy

+0

Czy nie jest to możliwe w zaktualizowanej wersji, aby użyć 'map.getCameraPosition(). Zoom'? Dlaczego konieczne jest wdrożenie odbiornika? A z tym 'onCameraIdleListener' nie uzyskałbyś bieżącego poziomu zoomu tylko wtedy, gdy kamera przejdzie w tryb bezczynności? –

Powiązane problemy