在GeoCoder地址中获取maxAddressLineIndex的大小为0。

问题描述 投票:1回答:1

我已经做了如下的Kotlin使用GeoCoder在Android中从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
}

但是,我得到 0 对于 address.maxAddressLineIndex.

地址地址[0] 有值。我通过调试检查了一下。

这就是为什么我的for循环里面没有执行的原因。

可能是什么问题?有什么解决方法吗?

android google-maps kotlin google-geocoder geocoder
1个回答
0
投票

我不太清楚你想实现什么,但我相信你是想根据给定的坐标访问一个地址.我相信for循环正在执行,就像你说的,它正在返回值0。这个0并不是与坐标相关联的地址数,而是你提供的地址可以访问可用地址线的索引.所以这意味着在索引0处只有一个地址。

所以既然你知道是一个地址链接到这些坐标的地址线,那么你就可以直接访问这个索引处的数据。

if (null != addresses && !addresses.isEmpty()) {
    address = addresses[0]
    addressText = “$address.locality , $address.latitude” //etc and other methods You can access.....
}

希望能帮到你,但如果你还想通过循环访问地址,最好让maximumAddressLine大于零。

它的效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.