在 GeoCoder 地址中获取 maxAddressLineIndex 的大小 0
Posted
技术标签:
【中文标题】在 GeoCoder 地址中获取 maxAddressLineIndex 的大小 0【英文标题】:Getting Size 0 for maxAddressLineIndex in GeoCoder Address 【发布时间】: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 引用了这个:***.com/questions/44983507/…,它有帮助。解决了。
【参考方案1】:
我不太确定您要实现什么,但我相信您想根据给定坐标访问地址。 我相信 for 循环正在执行,就像你说的那样,它返回值 0。这个零不是与坐标关联的地址数,而是可用 AddressLines 访问你提供的地址的索引。 所以这意味着在索引 0 处只有一个地址。
所以既然你知道它是链接到那些坐标的地址线的一个地址,那么你可以直接访问这个索引处的数据。
if (null != addresses && !addresses.isEmpty())
address = addresses[0]
addressText = “$address.locality , $address.latitude” //etc and other methods You can access.....
希望它有所帮助,但如果您仍想通过循环访问地址,最好您的 maximumAddressLine 大于零。
效果很好。
【讨论】:
【参考方案2】:您面临的问题是 maxAddressLineIndex 返回一个从 0 开始的索引。
最快的解决方法是在 for 循环中添加 1,直到 address.maxAddressLineIndex。
for (i in 0 until address.maxAddressLineIndex + 1)
addressText += if (i == 0) address.getAddressLine(i) else "\n" + address.getAddressLine(i)
这应该可以解决问题。
【讨论】:
以上是关于在 GeoCoder 地址中获取 maxAddressLineIndex 的大小 0的主要内容,如果未能解决你的问题,请参考以下文章
geocoder.getFromLocationName 仅返回 null
Google Maps V3 Geolocation Rails 3 gem 'geocoder' 地址不正确