度分秒与经纬度互转丨技术开发分享录

度分秒与经纬度互转

{{ detail.nickname }}

转载 翻译 {{ formatTime(detail.create_time) }} 字数 {{ detail.content && detail.content.length }} 阅读 {{ detail.read_num }} {{ formatTag(v) }}

"在线转换:http://www.minigps.net/fc.html\n\n## 一、经纬度转度分秒\n\n算法示例,假如有一个十进制的纬度:`36.12432314`,其转换成度分秒的规则是:\n\n整数部分为度,小数部分 * 60 得到的整数部分为分,得到的小数部分 * 60为秒\n\n即:36为度,`0.12432314 * 60 = 7.4593884` 中的7为分,`0.4593884 * 60 = 27.5639304` 为秒, 最终结果:`36°7′27.6`\n\n```\n//度转度°分′秒″\nfunction ToDegrees(val) {\n  if (typeof(val) == \"undefined\" || val == \"\") {\n    return \"\";\n  }\n  var i = val.indexOf('.');\n  var strDu = i < 0 ? val : val.substring(0, i); //获取度\n  var strFen = 0;\n  var strMiao = 0;\n  if (i > 0) {\n    var strFen = \"0\" + val.substring(i);\n    strFen = strFen * 60 + \"\";\n    i = strFen.indexOf('.');\n    if (i > 0) {\n      strMiao = \"0\" + strFen.substring(i);\n      strFen = strFen.substring(0, i); //获取分\n      strMiao = strMiao * 60 + \"\";\n      i = strMiao.indexOf('.');\n      strMiao = strMiao.substring(0, i + 4); //取到小数点后面三位\n      strMiao = parseFloat(strMiao).toFixed(2); //精确小数点后面两位\n    }\n  }\n  return strDu + \",\" + strFen + \",\" + strMiao;\n}\n```\n\n\n## 二、度分秒转经纬度\n\n同上相反即:`36 + 7/60 + 27.6/3600 ≈ 36.12432314`\n\n```\n//度°分′秒″转度\nfunction ToDigital(strDu, strFen, strMiao, len) {\n  len = (len > 6 || typeof(len) == \"undefined\") ? 6 : len; //精确到小数点后最多六位   \n  strDu = (typeof(strDu) == \"undefined\" || strDu == \"\") ? 0 : parseFloat(strDu);\n  strFen = (typeof(strFen) == \"undefined\" || strFen == \"\") ? 0 : parseFloat(strFen) / 60;\n  strMiao = (typeof(strMiao) == \"undefined\" || strMiao == \"\") ? 0 : parseFloat(strMiao) / 3600;\n  var digital = strDu + strFen + strMiao;\n  if (digital == 0) {\n    return \"\";\n  } else {\n    return digital.toFixed(len);\n  }\n}\n```\n\n## 三、硬转\n\n看到这种有点规则的,可以尝试硬转看看效果,因为这种看起来就有点像度分秒的形式,再结合实现生产可能就是用的这种坐标,大胆尝试\n\n```\nvar coord = [\"1025553.44\", \"250601.56\"];\n\nvar du = Math.floor(coord[0]/10000),\n  fen = Math.floor(coord[0]%10000/100),\n  miao = coord[0]%10000%100;\n```"
PS:写作不易,如要转裁,请标明转载出处。

如果此篇对您有帮助,可小额赞助,以兹鼓励!

猜你想看