老是奇葩需求 本来可以直接给经纬度 毛病就给我WGS84的什么东西 

就给我这个东西  "N22°32′21\"E114°03′25\""  你说气不气  我裂开了

然后我就找了一圈 找到可以转的 分享下 

kotlin代码

/**
 * 将经纬度转换为度分秒格式
 * @param du 116.418847
 * @return 116°25'7.85"
 */
fun changeToDFM(du: Double): String? {
    val du1 = du.toInt()
    val tp = (du - du1) * 60
    val fen = tp.toInt()
    val miao = String.format("%.2f", Math.abs((tp - fen) * 60))
    return du1.toString() + "°" + Math.abs(fen) + "'" + miao + "\""
}
/**
 * 度分秒转经纬度
 * @param dms 116°25'7.85"
 * @return 116.418847
 */
fun changeToDu(dms: String?): Double {
    var dms = dms ?: return 0.0
    try {
        dms = dms.replace(" ", "")
        val str2 = dms.split("°".toRegex()).toTypedArray()
        if (str2.size < 2) return 0.0
        val d = str2[0].toInt()
        val str3 = str2[1].split("′".toRegex()).toTypedArray()
        if (str3.size < 2) return 0.0
        val f = str3[0].toInt()
        val str4 = str3[1].substring(0, str3[1].length - 1)
        val m = str4.toDouble()
        val fen = f + m / 60
        var du = fen / 60 + Math.abs(d)
        if (d < 0) du = -du
        return du
    } catch (e: Exception) {
        e.printStackTrace()
    }
    return 0.0
}

测试示例

        val str: String = "N22°32′21\"E114°03′25\""
        val strArray = str.split("E")
        val longitude = strArray[0].replace("N", "").replace("E", "")
        val latitude = strArray[1]
        val long = TransformationUtils().changeToDu(longitude);
        val lat = TransformationUtils().changeToDu(latitude);
        Log.e("tab", "$long|$lat")

工具类链接  https://blog.csdn.net/chudang9293/article/details/100756826 这位铁子提供的

到这里就完了 

我要去敲代码了  拜拜

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐