我在选择当前位置时遇到了困难,有人可以指导我,只能定义静态值,我希望您选择当前位置。有人可以帮助我,谢谢。欢迎任何帮助
实用程序代码
import map.me.models.Issue
import com.google.android.gms.maps.model.LatLng
class Utils (location: LatLng){
companion object {
lateinit var currentLocation: LatLng
var vienna= LatLng(-23.5629, -46.6544)
var markers = ArrayList<Issue>()
}
init {
vienna = LatLng(-23.5629, -46.6544)
currentLocation = location
markers = ArrayList()
}
}
代码片段
override fun onMapReady(googleMap: GoogleMap) {
Log.i("MAP READY", "READY")
val position = if (currentLocation != null) LatLng(currentLocation!!.latitude, currentLocation!!.longitude) else Utils.vienna
this.map = googleMap
this.map!!.moveCamera(CameraUpdateFactory.newLatLngZoom(position, 15f)) // Vienna
getFineLocationPermission()
this.map!!.setOnMarkerClickListener(this)
this.map!!.uiSettings.isRotateGesturesEnabled = true
this.map!!.uiSettings.isZoomGesturesEnabled = true
this.map!!.setOnInfoWindowClickListener(this)
this.map!!.setOnMapLongClickListener(this)
}
最佳答案
问题在这里
kotlin.UninitializedPropertyAccessException: lateinit property currentLocation has not been initialized
发生这种情况是因为您的
lateinit var currentLocation: LatLng
从未在init{}
块中初始化。创建该类的新实例时,将调用该类的init{}
块。但是,您的currentLocation
是companion object
中的变量,因此当您以这种方式调用它时,您的类就永远不会创建对象,并且currentLocation
也不会初始化。您可以通过使用object而不是class来解决此问题。
object Utils {
lateinit var currentLocation: LatLng
init {
currentLocation = `...`
}
}