Android Google Map listeners getting called continuously

Viewed 625

I have integrated google map into my application.

Listener methods onCameraIdle() and onCameraIdle() functions are getting called continuously how to stop that?

Below is my fragment code:

    class AddAddressFragment : Fragment(), View.OnClickListener, OnMapReadyCallback,
        GoogleMap.OnCameraIdleListener, GoogleMap.OnCameraMoveListener {
    
    private var mGoogleMap: GoogleMap? = null
    
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
            super.onViewCreated(view, savedInstanceState)
    mapView?.getMapAsync(this)
    }

  override fun onMapReady(p0: GoogleMap?) {
        mGoogleMap = p0
        with(mGoogleMap) {
            this?.setOnCameraMoveListener(this@AddAddressFragment)
            this?.setOnCameraIdleListener(this@AddAddressFragment)
        }
    }
}

Below are the logs printed in onCameraIdle and onCameraMove functions:

override fun onCameraIdle() {
Log.d("CameraIdle", "Camera Idle called)
}

override fun onCameraMove() {
        Log.d("TAG", "Camera moved")
      
    }

Both onCameraIdle and onCameraMoved are called continuously, how to stop that?

1 Answers

Check this

  @Override
    public void onMapReady(GoogleMap googleMap) {
        map = googleMap;

        map.setOnCameraIdleListener(this);
        map.setOnCameraMoveStartedListener(this);
        map.setOnCameraMoveListener(this);
        map.setOnCameraMoveCanceledListener(this);
        // We will provide our own zoom controls.
        map.getUiSettings().setZoomControlsEnabled(false);
        map.getUiSettings().setMyLocationButtonEnabled(true);

        // Show Sydney
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(-33.87365, 151.20689), 10));
    }

Call GoogleMap.stopAnimation(), which invokes onCameraMoveCancelled. But for that you need to register a listener by map.setOnCameraMoveCanceledListener(this)

Related