在Kotlin中,如何获取当前位置的城市名称,并从中获取纬度和经度值?
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 }
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 }
2条答案
按热度按时间i1icjdpr1#
当前接受的答案只能部分解决此问题。您可以在世界各地的不同城市测试您的代码(尝试东京或巴西利亚),并快速查看为何返回的结果不理想。最有可能的问题是其他地址格式。
我设法找到的最接近“通用”的解决方案是这样的(它并不漂亮,但到目前为止,它适用于我尝试过的任何城市):
5lhxktic2#
首先,我尝试使用Address [0].locality获取城市名称,但返回了null。Address [0].adminArea给出了我所拥有的经纬度所在城市的名称。