You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
class Angle {
|
|
|
|
|
constructor() {}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 十进制经纬度转度分秒,精确至毫秒
|
|
|
|
|
* @param decimal_var 十进制经纬度
|
|
|
|
|
* @constructor
|
|
|
|
|
*/
|
|
|
|
|
static DecimalDegree2DMS(decimal_var: number|string){
|
|
|
|
|
if(!decimal_var.toString().includes('.'))
|
|
|
|
|
return decimal_var.toString() + '°0\'0\'\''
|
|
|
|
|
let decimalStr = decimal_var.toString().split('.')
|
|
|
|
|
let degreeStr = decimalStr[0]
|
|
|
|
|
if (decimalStr[1]){
|
|
|
|
|
let minutes = Number(decimalStr[1]) / Math.pow(10,decimalStr[1].length) * 60
|
|
|
|
|
if(!minutes.toString().includes('.'))
|
|
|
|
|
return degreeStr + '°'+ minutes.toString() +'\'0\'\''
|
|
|
|
|
let minuteSecondsStr = minutes.toString().split('.')
|
|
|
|
|
if (minuteSecondsStr[1]){
|
|
|
|
|
let secondStr = Number(minuteSecondsStr[1]) / Math.pow(10,minuteSecondsStr[1].length) * 60
|
|
|
|
|
return degreeStr + '°'+ minuteSecondsStr[0] +'\'' + secondStr.toFixed(3) + '\'\''
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return ''
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export { Angle }
|