Android WGS84转经纬度
·
老是奇葩需求 本来可以直接给经纬度 毛病就给我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 这位铁子提供的
到这里就完了
我要去敲代码了 拜拜
更多推荐


所有评论(0)