问题描述
在我的程序中,我想获取一个字符串,其中包含与手机上的位置相对应的城市名称。我有地理编码器代码:
class LocationData : LocationDataInterface{
var result: String = ""
override fun getAdreesTown(location: Location,context: Context): String {
val thread = Thread(
Runnable {
val geocoder = Geocoder(context,Locale.getDefault())
try{
var list: List<Address> = geocoder. getFromLocation(location.getLatitude(),location.getLongitude(),1)
if(list != null && list.size > 0){
var address : Address = list.get(0) as Address
result = "${address. getAddressLine(0)},${address.getLocality()}"
}
}catch(e: IOException){
Log.d("Egor","Подключение к геокодеру не установлено: $e.message")
}
}).run()
thread.start()
return result
}
}
请求位置的权限在清单中指定:
<uses-permission android:name = "android.permission.ACCESS_COARSE_LOCATION"/>
我的问题是我不知道如何将带有当前位置的 Location 对象传递给 Geocoder。我尝试了不同的选项(例如,fusedLocationClient),但没有任何效果。
class MainActivity : AppCompatActivity(),DataProcessingCallback {
\\
lateinit var locationData: LocationDataInterface
\\
override fun onCreate(savedInstanceState: Bundle?) {
locationData = LocationData()
val e = locationData.getAdreesTown(Location(LocationManager.NETWORK_PROVIDER),this)
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationClient.lastLocation.addOnSuccessListener { location : Location? ->
locationNow = location
}
val e = locationData.getAdreesTown(location,this)
如何使用当前位置创建位置对象?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)