一、经纬度的表示方式
示例1:-55.016666666666666
示例2: E42°14′1″
一、12.033888888888889或者-1.051111111111111 转成 N12°2′2.00″ 或者 W1°3′4.00″
分为两部分,一部分是判断方位,另一部分就是换算度分秒
**判断方位:**东正西负,北正南负
// 换算度分秒,如下
export const ToDegrees = (val) => {
if (typeof(val) == "undefined" || val == "") {
return "";
}
var i = val.indexOf('.');
// 这里是先判断的方位,所以最终结果不包含负数。
if (val.indexOf("-") != -1) {
var strDu = i < 0 ? val : val.substring(1, i); //获取度
} else {
var strDu = i < 0 ? val : val.substring(0, i); //获取度
}
var strFen = 0;
var strMiao = 0;
if (i > 0) {
var 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 + "\″"; // 这里可以修改成你想要的格式例如你可以
// 改成这样的:return strDu + "°" + strFen + "'" + strMiao + "\"N";
}
二、N12°2′2.00″ 或者 W1°3′4.00″转成12.033888888888889或者-1.051111111111111
同样,方位判断移到外面,不然数字类型在进行加运算时,会出错。
// 参数:度,分,秒,小数点后几位
export const ToDigital = (strDu, strFen, strMiao, len) => {
let duIsNegative = false
len = (typeof(len) == "undefined") ? 15 : len; // 将小数点后15位保留
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;
var digital = strDu + strFen + strMiao;
if (digital == 0) {
return "";
} else {
return digital.toFixed(len);
}
}