android listener deprecated

android - OnCameraChangeListener() está en desuso



deprecated (5)

Hoy, mirando hacia atrás a mi antiguo código, descubrí que OnCameraChangeListener () ahora está en desuso.

Me resulta difícil entender cómo arreglar este código mío:

mGoogleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() { @Override public void onCameraChange(CameraPosition cameraPosition) { // Cleaning all the markers. if (mGoogleMap != null) { mGoogleMap.clear(); } mPosition = cameraPosition.target; mZoom = cameraPosition.zoom; if (mTimerIsRunning) { mDragTimer.cancel(); } mDragTimer.start(); mTimerIsRunning = true; } });

El nuevo método de escucha (también conocido como OnCameraMoveListener () ) onCameraMove () no tiene una variable de entrada CameraPosition cameraPosition , así que estoy bastante perdido: ¿hay alguna forma de reciclar mi código anterior?

Here hay algunas referencias.


Acabo de actualizar la respuesta de @ Barrak90 en Kotlin. Como OnCameraChangeListener () está en desuso ahora, usted puede usar

mMap.setOnCameraMoveStartedListener { reason: Int -> when (reason) { GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE -> { Log.d("camera", "The user gestured on the map.") } GoogleMap.OnCameraMoveStartedListener .REASON_API_ANIMATION -> { Log.d("camera", "The user tapped something on the map.") } GoogleMap.OnCameraMoveStartedListener .REASON_DEVELOPER_ANIMATION -> { Log.d("camera", "The app moved the camera.") } } } mMap.setOnCameraIdleListener { val midLatLng: LatLng = mMap.cameraPosition.target//map''s center position latitude & longitude } mMap.setOnCameraMoveStartedListener { }

Aquí mMap es el objeto GoogleMap y lo llamo dentro.

override fun onMapReady(map: GoogleMap?) { mMap = map as GoogleMap //your stuff }


En el nuevo modelo para eventos de cambio de cámara , es correcto que la CameraPosition la CameraPosition no se transfiera al oyente.

En su lugar, solo debe usar getCameraPosition() siempre que lo necesite específicamente (es decir, cuando comienza el movimiento, a mitad de la jugada, cancelado o finalizado / regresado al estado inactivo).


En la versión 9.4.0 de la API de play-services-maps , reemplazaron GoogleMap.OnCameraChangeListener() con tres oyentes de cámara:

  • GoogleMap.OnCameraMoveStartedListener
  • GoogleMap.OnCameraMoveListener
  • GoogleMap.OnCameraIdleListener

Según su código, creo que necesita usar GoogleMap.OnCameraIdleListener y GoogleMap.OnCameraMoveStartedListener esta manera:

mGoogleMap.setOnCameraMoveStartedListener(new GoogleMap.OnCameraMoveStartedListener() { @Override public void onCameraMoveStarted(int i) { mDragTimer.start(); mTimerIsRunning = true; } }); mGoogleMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() { @Override public void onCameraIdle() { // Cleaning all the markers. if (mGoogleMap != null) { mGoogleMap.clear(); } mPosition = mGoogleMap.getCameraPosition().target; mZoom = mGoogleMap.getCameraPosition().zoom; if (mTimerIsRunning) { mDragTimer.cancel(); } } });


Es recomendable utilizar cuatro escuchas de cámara recién introducidas ( OnCameraIdleListener , OnCameraMoveListener , OnCameraMoveStartedListener , OnCameraMoveCanceledListener ), pero si todavía desea usar setOnCameraChangeListener use una versión específica de android-maps-utils (Se muestra a continuación)

compilar ''com.google.maps.android:android-maps-utils:0.4.3''

en su archivo de nivel de módulo gradle.


use mGoogleMap.setOnCameraIdleListener en lugar de mGoogleMap.setOnCameraChangeListener .

mGoogleMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() { @Override public void onCameraIdle() { mPosition = mGoogleMap.getCameraPosition().target; mZoom = mGoogleMap.getCameraPosition().zoom; double lat = mGoogleMap.getCameraPosition().target.latitude; double lng = mGoogleMap.getCameraPosition().target.longitude; } });