【发布时间】:2020-03-31 08:25:09
【问题描述】:
我在 Kotlin 中做了如下操作,在 Android 中使用 GeoCoder 从 LatLng 获取地址:
private fun getAddress(latLng: LatLng): String {
// 1
val geocoder = Geocoder(this)
val addresses: List<Address>?
val address: Address?
var addressText = ""
try {
// 2
addresses = geocoder.getFromLocation(latLng.latitude, latLng.longitude, 1)
// 3
if (null != addresses && !addresses.isEmpty()) {
address = addresses[0]
for (i in 0 until address.maxAddressLineIndex) {
addressText += if (i == 0) address.getAddressLine(i) else "\n" + address.getAddressLine(i)
}
}
} catch (e: IOException) {
Log.e("MapsActivity", e.localizedMessage)
}
Log.e("ADDRESS TEXT >>",""+addressText)
return addressText
}
但是,对于 address.maxAddressLineIndex,我得到 0。
address 和 addresses[0] 具有值。我通过调试检查了它。
这就是为什么我的 for 循环没有在里面执行。
可能是什么问题?请提供任何解决方案。
【问题讨论】:
-
你不能使用while循环来循环吗?比如,while(address[i] !== null) {doYourStuff} ?
-
@MatheusRibeiro 让我试试。尽快通知您。谢谢。
-
同时检查
!address[i].toString().equals("") -
@MatheusRibeiro 引用了这个:stackoverflow.com/questions/44983507/…,它有帮助。解决了。
标签: android google-maps kotlin google-geocoder geocoder