/* 205.395583333332 = 205°23'44.1" 1,直接读取"度":205 2,(205.395583333332-205)*60=23.734999999920 得到"分":23 3,(23.734999999920-23)*60=44.099999995200 得到"秒":44.1 return string, */ export function latLngDecimalToDegrees(decimal) { let absDecimal = Math.abs(decimal); let isNegative = Math.abs(decimal) != decimal; let d = Math.floor(absDecimal); //度 let m = Math.floor((absDecimal - d) * 60); //分 let s = Math.round((absDecimal - d) * 3600 % 60); //秒 if (s == 60) { s = 0; m++; } if (m == 60) { m = 0; d++; } //d = ('000'+d).slice(-3); // left-pad with leading zeros const mm = ('00' + m).slice(-2); // left-pad with leading zeros const ss = ('00' + s).slice(-2); //if (s<10) s = '0' + s; // left-pad with leading zeros (note may include decimals) return (isNegative ? "-" : "") + d + '°' + mm + "′" + ss + '″'; } /* Decimal Degrees = Degrees + minutes/60 + seconds/3600 例:57°55'56.6" =57+55/60+56.6/3600=57.9323888888888 return Float or NaN */ export function latLngDegreesToDecimal(degreesStr) { let degreesArr = degreesStr.split("°"); let degrees = parseInt(degreesArr[0]); let isNegative = Math.abs(degrees) != degrees; if (degreesArr.length == 1) { return degrees; } else if (!isSafeString(degreesArr[1])) { return degrees; } let minutesArr = degreesArr[1].split("′"); let minutes = parseInt(minutesArr[0]); let min = parseFloat((isNegative ? "-" : "") + (Math.abs(degrees) + Math.abs(minutes) / 60)); if (minutesArr.length == 1) { return min; } else if (!isSafeString(minutesArr[1])) { return min; } let secondsStr = minutesArr[1]; let secondsArr = secondsStr.split('″'); let seconds = parseFloat(secondsArr[0]); return parseFloat((isNegative ? "-" : "") + (Math.abs(degrees) + Math.abs(minutes) / 60 + Math.abs(seconds) / 3600)); } export function isObject(arg) { return typeof arg === 'object' && arg !== null; } export function isUndefined(arg) { return arg === void 0; } export function isString(arg) { return typeof arg === 'string'; } export function isSafeString(arg) { if (isUndefined(arg)) { return false; } if (!isString(arg)) { return false; } if (arg.length == 0) { return false; } return true; } export function isNumber(arg) { return typeof arg === 'number'; } export function hasPoint(obj) { return (isObject(obj) && isNumber(obj.lat) && isNumber(obj.lng)); }