【问题标题】:How to convert geohash to Latitude and Longitude in Kotlin如何在 Kotlin 中将 geohash 转换为纬度和经度
【发布时间】:2022-01-02 12:41:57
【问题描述】:

我有一个字符串值作为 geohash,我想在 Kotlin 中将其更改为纬度和经度。我找不到任何图书馆。 如何在 Kotlin 中将 geohash 转换为经纬度?

【问题讨论】:

    标签: kotlin latitude-longitude geohashing


    【解决方案1】:

    看起来geohash-java 支持这个:

    在纯 Java 中实现 Geohashes。当使用字符精度(5 位的倍数)时,生成的哈希值与参考实现 geohash.org 兼容。

    但是,您也可以将 Geohashes 编码到 long 的全部可用精度,即 64 位。

    如果您使用 Maven,可以将以下内容添加到您的 pom.xml 文件中:

    <dependency>
        <groupId>ch.hsr</groupId>
        <artifactId>geohash</artifactId>
        <version>1.4.0</version>
    </dependency>
    

    如果您使用的是 Gradle,则将以下实现行添加到您的 build.gradle 文件中:

    implementation("ch.hsr:geohash:1.4.0")
    

    示例用法:

    import ch.hsr.geohash.GeoHash
    
    fun main(args: Array<String>) {
        val geoHashString = "u4pruydqqvj" // Peninsula of Jutland, Denmark from en.wikipedia.org/wiki/Geohash
        println("geoHashString: $geoHashString")
        val geoHash = GeoHash.fromGeohashString(geoHashString)
        println("geoHash: $geoHash")
        val point = geoHash.originatingPoint
        println("point: $point")
        val lat = point.latitude
        println("lat: $lat")
        val lng = point.longitude
        println("lng: $lng")
    }
    

    输出:

    geoHashString: u4pruydqqvj
    geoHash: 1101000100101011011111010111100110010110101101101110001000000000 -> (57.64911130070686,10.407439023256302) -> (57.649109959602356,10.40744036436081) -> u4pruydqqvj
    point: (57.64911063015461,10.407439693808556)
    lat: 57.64911063015461
    lng: 10.407439693808556
    

    【讨论】:

    • 你是完美的。非常感谢)
    猜你喜欢
    • 2021-10-20
    • 2012-04-19
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    相关资源
    最近更新 更多