使用地理编码从 latlang 转换为地址 Not working Android Kotlin

Posted

技术标签:

【中文标题】使用地理编码从 latlang 转换为地址 Not working Android Kotlin【英文标题】:Convert from latlang to address using Geocoding Not working Android Kotlin 【发布时间】:2020-03-24 12:32:57 【问题描述】:

这是我的职责

private fun getAddress(latLng: LatLng): String 
        val geocoder = Geocoder(this)
        val addresses: List<Address>?
        val address: Address?
        var addressText = ""

        try 
            addresses = geocoder.getFromLocation(latLng.latitude, latLng.longitude, 1)
            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)
        

        return addressText

我这样调用函数

val lat  = dataVar.get(0).lat!!.toDouble()
val lang = dataVar.get(0).lng!!.toDouble()

val latLang = LatLng(lat, lang)

address.text = getAddress(latLang)

输出没有显示任何东西。 是免费使用 API,还是需要主动计费才能使用?

2019-11-30 09:23:28.224 7918-7918/E/SchedPolicy:set_timerslack_ns 写入失败:不允许操作

【问题讨论】:

请使用编辑器内联发布您的代码,点击多张图片会使其他人很难全面分析您的代码。此外,日志输出什么?我还想知道您传递给函数的“it”值是否有效,是否有该数据的示例(也许也记录该数据并让我们知道输出)。 【参考方案1】:

您可以将 getAddress 函数更改为

private fun getAddress(lat: Double, lng: Double): String 
    val geocoder = Geocoder(this)
    val list = geocoder.getFromLocation(lat, lng, 1)
    return list[0].getAddressLine(0)

那么调用方法的例子是这样的

val lat = -7.316463
val lng = 112.748348

val address = getAddress(lat, lng)
// use address variable for your purpose

回答谷歌服务的问题。如果你只使用地图,它现在是免费的。如果您使用 Places API,则需要启用帐户计费。这个link 可能有助于开始启用您的计费

【讨论】:

以上是关于使用地理编码从 latlang 转换为地址 Not working Android Kotlin的主要内容,如果未能解决你的问题,请参考以下文章

使用FME进行地理编码转换

用于从 IP 地址获取地理编码的 Java 库

地理编码地址到经纬度转换(APP FORCE CLOSES)

百度MapAPI之地理编码

为地理编码结果自动寻找合适的缩放比例

Google iOS 地理编码 SDK 将经纬度反向转换为 Places ID