我最近添加了获取位置功能。当我尝试显示经度和纬度时,它返回零。
这是我的 LocationListener 类:
inner class MylocationListener: LocationListener {
constructor():super(){
mylocation= Location("me")
mylocation!!.longitude
mylocation!!.latitude
}
override fun onLocationChanged(location: Location?) {
mylocation=location
}
override fun onStatusChanged(p0: String?, p1: Int, p2: Bundle?) {}
override fun onProviderEnabled(p0: String?) {}
override fun onProviderDisabled(p0: String?) {}
}
这是我的 GetUserLocation 函数:
fun GetUserLocation(){
var mylocation= MylocationListener()
var locationManager=getSystemService(Context.LOCATION_SERVICE) as LocationManager
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0.1f,mylocation)
}
这是我返回经度和纬度的函数:
fun getLoction (view: View){
prgDialog!!.show();
GetUserLocation()
button.setTextColor(getResources().getColor(R.color.green));
textView.text = mylocation!!.latitude.toFloat().toString()
Toast.makeText(this, mylocation!!.latitude.toFloat().toString(), Toast.LENGTH_LONG).show()
Toast.makeText(this, mylocation!!.longitude.toFloat().toString(), Toast.LENGTH_LONG).show()
prgDialog!!.hide()
}
原文由 Nour Medhat 发布,翻译遵循 CC BY-SA 4.0 许可协议
当
GetUserLocation
返回时,locationManager
超出范围并可能被销毁,从而防止onLocationChanged
被调用并提供更新。此外,您已经在
mylocation
内部定义了GetUserLocation
所以它也超出了范围并进一步扼杀了任何机会或您获得更新。您还没有显示外部
mylocation
的声明位置和方式(在GetUserLocation
之外),但是无论它是如何声明的,它都被GetUserLocation
的内部所掩盖---
.所以你得到的不多。这是一个示例,说明您可以如何做到这一点。 (变量
thetext
在布局 xml 中定义并通过 Kotlin 扩展访问。)