我正在使用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中没有任何内容,所以我自己试了一下。感谢您帮助我找到此代码的错误。
答案 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")
}
})