Как получить названия местоположений по широте и долготе в Котлине

val geocoder = Geocoder(context, Locale.getDefault())
val addresses = geocoder.getFromLocation(latitude, longitude, 1)
val title = addresses[0]?.getAddressLine(0)
val placesClient = Places.createClient(context)
val latLng = LatLng(latitude, longitude)
val request = FindCurrentPlaceRequest.newInstance(listOf(Place.Field.NAME))
placesClient.findCurrentPlace(request)
    .addOnSuccessListener { response ->
        val place = response.placeLikelihoods[0].place
        val title = place.name
    }
val url = "https://nominatim.openstreetmap.org/reverse?lat=$latitude&lon=$longitude&format=json"
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object : Callback {
    override fun onResponse(call: Call, response: Response) {
        val jsonResponse = response.body()?.string()
        val jsonObject = JSONObject(jsonResponse)
        val title = jsonObject.getString("display_name")
    }
    override fun onFailure(call: Call, e: IOException) {
        // Handle failure
    }
})
val geocoding = MapboxGeocoding.builder()
    .accessToken("YOUR_ACCESS_TOKEN")
    .query(Point.fromLngLat(longitude, latitude))
    .build()
geocoding.enqueueCall(object : Callback<GeocodingResponse> {
    override fun onResponse(call: Call<GeocodingResponse>, response: Response<GeocodingResponse>) {
        val title = response.body()?.features()?.get(0)?.placeName()
    }
    override fun onFailure(call: Call<GeocodingResponse>, throwable: Throwable) {
        // Handle failure
    }
})