【问题标题】:Android Google Map listeners getting called continuouslyAndroid Google Map 监听器不断被调用
【发布时间】:2021-05-28 18:56:03
【问题描述】:

我已将谷歌地图集成到我的应用程序中。

监听方法 onCameraIdle() 和 onCameraIdle() 函数被连续调用如何停止?

下面是我的片段代码:

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

以下是 onCameraIdle 和 onCameraMove 函数打印的日志:

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

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

onCameraIdle 和 onCameraMoved 都被连续调用,如何停止?

【问题讨论】:

    标签: android kotlin google-maps-android-api-2 google-maps-api-2


    【解决方案1】:

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

    调用GoogleMap.stopAnimation(),它调用onCameraMoveCancelled。但为此您需要通过map.setOnCameraMoveCanceledListener(this)注册一个监听器

    【讨论】:

    • 这就是我正在做的事情
    • 请查看更新后的答案。我希望这会有所帮助!
    • 如果您可以更具体地说明您的要求,最好回答。因为这些监听器以这种方式工作,所以相机的每一次移动都会通知您。
    • 即使相机没有移动并且相机处于空闲状态,监听器也会不断被调用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多