如何解决Android 谷歌地图监听器不断被调用
我已将谷歌地图集成到我的应用程序中。
不断调用 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 都被连续调用,如何停止?
解决方法
检查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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。