MapOnClickListener似乎不起作用

时间:2017-12-20 17:44:00

标签: android google-maps kotlin


我正在使用Kotlin和GoogleMap编写应用程序。我已经得到了地图,我试图设置一个只记录消息的OnMapClick监听器。构建是可以的,但是当我点击地图时,没有任何反应。
我找了文档,但我没有发现这样的问题。

这里是地图的代码:

class map : FragmentActivity(), OnMapReadyCallback {
     private var mMap: GoogleMap? = null

     override fun onMapReady(googleMap: GoogleMap) {
         mMap = googleMap
         mMap?.setOnMapClickListener {
             GoogleMap.OnMapClickListener { p0 -> Log.d("Map", p0.toString()) }
         }
     }
}

我在Java中发现了很多关于GoogleMap的文档,但在Kotlin中没有任何内容,所以我自己试了一下。感谢您帮助我找到此代码的错误。

2 个答案:

答案 0 :(得分:1)

您使用setOnMapClickListener将lambda传递给{}。实际上,您只是想将GoogleMap.OnMapClickListener作为参数传递,这将与括号一起使用。因此,请将代码更改为setOnMapClickListener(GoogleMap.OnMapClickListener())

答案 1 :(得分:0)

有两种方法可以做到这一点。

方法1:将一个侦听器var传递给其中

val mapCickListener = object : GoogleMap.OnMapClickListener {
        override fun onMapClick(p0: LatLng?) {
            Log.d("Map_Tag", "CLICK")
        }
    }

    map.setOnMapClickListener(mapCickListener) //Note. Use () and not {}

方法2。只需在调用中传递对象。

  map.setOnMapClickListener(object : GoogleMap.OnMapClickListener {
        override fun onMapClick(p0: LatLng?) {
            Log.d("Map_Tag", "CLICK")
        }
    })