2013-05-03 5 views
45

Googleマップの現在のズームレベルを整数として取得するにはどうすればよいですか?私はGMaps v1.1のからこのコードを実行する必要があります。GoogleマップV2 - Android - 現在のズームレベルを取得

MapView mGoogleMapView; 

int zoomLevel = mGoogleMapView.getZoomLevel(); 

私はgetMinZoomLevel()とgetMaxZoomLevel()メソッドを認識していIが電流を与えるのAndroid GMapのV2のドキュメントで何かを見つけることができませんしかし、ズームレベル。誰にどのようにこれを行うにはどのようなポインターがありますか?

ご協力いただければ幸いです。

答えて

148
GoogleMap map; 

....

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

これは、UIスレッド上で行う必要があり、またはあなたが例外を取得します! –

33

私はOnCameraChangeListenerは、トリックを行うだろうと思い...

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

更新:

Googleからのサービス9.4を再生します。 0OnCameraChangeListener は廃止されましたし、それはもはや、彼らがOnCameraMoveStartedリスナー、OnCameraMoveListenerOnCameraMoveCancel edListenerOnCameraIdleListenerに置き換えられsoon.Alternately動作しません。

したがって、カメラの現在のズームレベルを取得するには、OnCameraIdleListenerを使用します。

コードサンプル:

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

このメソッドは推奨されなくなりました。 setOnCameraMoveStartedListener(GoogleMap.OnCameraMoveStartedListener)、setOnCameraMoveListener(GoogleMap.OnCameraMoveListener)、setOnCameraMoveCanceledListener(GoogleMap.OnCameraMoveCanceledListener)、およびsetOnCameraIdleListener(GoogleMap.OnCameraIdleListener)に置き換えられました。 –

+0

@NaszNjokaSr。あなたの懸念に感謝します。それに応じて更新。 – ridoy

+0

更新されたバージョンでは 'map.getCameraPosition()。zoom'だけを使用できませんか? リスナーの実装はなぜ必要ですか? この 'onCameraIdleListener'では、カメラがアイドルモードになったときにのみ現在のズームレベルを取得できませんか? –

関連する問題