使用地理编码从 latlang 转换为地址 不起作用的安卓 Kotlin



这是我的功能

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/计划策略:set_timerslack_ns写入失败:不允许操作

您可以将 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

解决了谷歌服务的问题。如果您只使用地图,则暂时免费。如果您使用的是地点 API,则需要启用帐户计费。此链接可能有助于开始启用结算

相关内容

  • 没有找到相关文章

最新更新