经纬度与度分秒相互转换

/**
 * @description 经纬度转度分秒 输入 toDeg(29.837778)
 * @param {v} v 经纬度
 * @return {*} String
 */
export const toDeg = (v) => {
  let val = String(v)
  if (typeof (val) == "undefined" || val == "") {
    return "";
  }
  let i = val.indexOf('.');
  let strDu = i < 0 ? val : val.substring(0, i);//获取度
  let strFen = 0;
  let strMiao = 0;
  if (i > 0) {
    let strFen = "0" + val.substring(i);
    strFen = strFen * 60 + "";
    i = strFen.indexOf('.');
    if (i > 0) {
      strMiao = "0" + strFen.substring(i);
      strFen = strFen.substring(0, i);//获取分
      strMiao = strMiao * 60 + "";
      i = strMiao.indexOf('.');
      strMiao = strMiao.substring(0, i + 4);//取到小数点后面三位
      strMiao = parseFloat(strMiao).toFixed(2);//精确小数点后面两位
    }
  }
  return strDu + "," + strFen + "," + strMiao;
}


/**
 * @description 度分秒转经纬度 输入 toLngLat(29,50,16)
 * @param {strDu} strDu 度
 * @param {strFen} strFen 分
 * @param {strMiao} strMiao  秒
 * @param {len} len  保留的位数 默认6位
 * @return {*} Number 29.837778
 */
export const toLngLat = (strDu, strFen, strMiao, len = 6) => {
  len = (len > 6 || typeof (len) == "undefined") ? 6 : len;//精确到小数点后最多六位   
  strDu = (typeof (strDu) == "undefined" || strDu == "") ? 0 : parseFloat(strDu);
  strFen = (typeof (strFen) == "undefined" || strFen == "") ? 0 : parseFloat(strFen) / 60;
  strMiao = (typeof (strMiao) == "undefined" || strMiao == "") ? 0 : parseFloat(strMiao) / 3600;
  let digital = strDu + strFen + strMiao;
  if (digital == 0) {
    return "";
  } else {
    return Number(digital.toFixed(len));
  }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠紫月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值