在 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

addressaddresses[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 使用地址获取经度和纬度

使用json而不是Geocoder从谷歌地图获取位置地址

geocoder.getFromLocationName 仅返回 null

Google Maps V3 Geolocation Rails 3 gem 'geocoder' 地址不正确

Google Maps API v3:使用 IP 地址多个 LatLng 的 Geocoder.geocode

运行 Geocoder.local.findAddressesFromQuery 时出错