一.项目背景及实现思路
最近项目中遇到经纬度转度分秒,记录一下方便以后使用
公式:L=D+M/60+S/3600, L代表经纬度,D代表度,M代表分,S是秒。
实现思路:
一般经纬度都是小数点后面好几位,整数部分就是度,小数点部分乘以60得到的数的整数部分就是分,再用小数点部分乘以60就是秒。
二.js代码
// 经纬度转度分秒
// str.indexOf('.'):str字符串里没有.返回-1,反之返回对应的下标
// str.substring(0,i):截取从0到1的字符形成新的字符串,包头不包尾
function toDegrees(val){
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){
strFen = '0'+val.substring(i);
strFen = strFen*60+'';
i=strFen.indexOf('.');
if(i>0){
strMiao = '0'+val.substring(i);
strFen = strFen.substring(0,i);
strMiao = strMiao*60+'';
i = strMiao.indexOf('.');
strMiao=strMiao.substring(0,i+4); // 保留四位小数
strMiao = parseFloat(strMiao).toFixed(0);
}
}
return [strDu,strFen,strMiao];
}