获取Google Map相机闲置状态下的中心坐标问题求助
解决Google Map相机闲置时无法获取中心坐标的问题
你的代码存在两个关键问题导致功能失效:
- 监听器注册错误:
setOnCameraIdleListener需要传入一个OnCameraIdleListener的实现,但你嵌套创建了新的OnCameraIdleListener实例,实际回调逻辑并没有绑定到相机闲置事件上。 - 日志输出笔误:Log中把纬度和经度都调用了
longitude属性,导致输出的两个值都是经度,无法正确显示纬度信息。
修正后的代码(Lambda简化写法)
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_shifting_map) val mapFragment = supportFragmentManager.findFragmentById(R.id.map_fragment) as SupportMapFragment mapFragment.getMapAsync(this) } override fun onMapReady(googleMap: GoogleMap) { mMap = googleMap // 直接传入Lambda作为回调,无需嵌套创建监听器 mMap.setOnCameraIdleListener { val centerLatLng = mMap.projection.visibleRegion.latLngBounds.center // 修正纬度和经度的调用 Log.d("##", "lat: ${centerLatLng.latitude}, long: ${centerLatLng.longitude}") } }
另一种写法(显式实现监听器)
如果偏好更清晰的结构,可以用显式匿名类实现:
override fun onMapReady(googleMap: GoogleMap) { mMap = googleMap mMap.setOnCameraIdleListener(object : GoogleMap.OnCameraIdleListener { override fun onCameraIdle() { val centerLatLng = mMap.projection.visibleRegion.latLngBounds.center Log.d("##", "lat: ${centerLatLng.latitude}, long: ${centerLatLng.longitude}") } }) }
修改后,当相机移动结束进入闲置状态时,就能正确获取并打印地图中心的经纬度坐标了。
内容的提问来源于stack exchange,提问作者Wanjala Alex
相关产品推荐
相关产品推荐

