You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取Google Map相机闲置状态下的中心坐标问题求助

解决Google Map相机闲置时无法获取中心坐标的问题

你的代码存在两个关键问题导致功能失效:

  1. 监听器注册错误:setOnCameraIdleListener需要传入一个OnCameraIdleListener的实现,但你嵌套创建了新的OnCameraIdleListener实例,实际回调逻辑并没有绑定到相机闲置事件上。
  2. 日志输出笔误: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:45:32