es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no hay una biblioteca incorporada en Kotlin para convertir geohash a latitud y longitud. Sin embargo, puedes crear tu propia función para implementar la conversión.

    Aquí tienes un ejemplo de una función que puede convertir una cadena de geohash a latitud y longitud:

    fun decodeGeohash(geohash: String): Pair<double, double=""> {
        var latRange = Pair(-90.0, 90.0)
        var lngRange = Pair(-180.0, 180.0)
        var isEven = true
    
        for (ch in geohash) {
            val idx = BASE32.indexOf(ch)
            for (bit in BITS) {
                if (isEven) {
                    divideRangeByBits(idx, lngRange, bit)
                } else {
                    divideRangeByBits(idx, latRange, bit)
                }
                isEven = !isEven
            }
        }
    
        val lat = (latRange.first + latRange.second) / 2
        val lng = (lngRange.first + lngRange.second) / 2
        return Pair(lat, lng)
    }
    
    private fun divideRangeByBits(idx: Int, range: Pair<double, double="">, bit: Int) {
        val mid = (range.first + range.second) / 2
        if ((idx and bit) == 0) {
            range = Pair(range.first, mid)
        } else {
            range = Pair(mid, range.second)
        }
    }
    

    Esta función primero define el rango de latitud y longitud, luego itera a través de cada carácter en el geohash. Posteriormente, divide el rango de latitud y longitud en función de los bits en el carácter del geohash y actualiza el rango en consecuencia. Finalmente, devuelve el punto medio de los rangos de latitud y longitud como los valores de latitud y longitud.

    Para usar esta función, simplemente llámala con tu cadena de geohash como argumento:

    val geohash = "6gkzwgcs"
    val pair = decodeGeohash(geohash)
    val lat = pair.first
    val lng = pair.second
    

    Esto te dará los valores de latitud y longitud para el geohash dado.</double,></double,>

Comments are closed.