android 如何从经度和纬度找到城市名称

kgqe7b3p  于 2022-11-20  发布在  Android
关注(0)|答案(2)|浏览(113)

在Kotlin中,如何获取当前位置的城市名称,并从中获取纬度和经度值?

i1icjdpr

i1icjdpr1#

当前接受的答案只能部分解决此问题。您可以在世界各地的不同城市测试您的代码(尝试东京或巴西利亚),并快速查看为何返回的结果不理想。最有可能的问题是其他地址格式。
我设法找到的最接近“通用”的解决方案是这样的(它并不漂亮,但到目前为止,它适用于我尝试过的任何城市):

private fun getCityName(lat: Double,long: Double):String{
    var cityName: String?
    val geoCoder = Geocoder(this, Locale.getDefault())
    val address = geoCoder.getFromLocation(lat,long,1)
    cityName = address[0].adminArea
    if (cityName == null){
        cityName = address[0].locality
        if (cityName == null){
            cityName = address[0].subAdminArea
        }
    }
    return cityName
}
5lhxktic

5lhxktic2#

首先,我尝试使用Address [0].locality获取城市名称,但返回了null。Address [0].adminArea给出了我所拥有的经纬度所在城市的名称。

private fun getCityName(lat: Double,long: Double):String{
        val cityName: String?
        val geoCoder = Geocoder(requireContext(), Locale.getDefault())
        val Adress = geoCoder.getFromLocation(lat,long,3)

        cityName = Adress[0].adminArea
       binding.txtCity.text = cityName
        return cityName
    }

相关问题