经纬度转换、换算

一、经纬度的表示方式

示例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);
	}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值