0
我有我的AIR应用程序,显示如用户的当前位置:AS3 - 公式将十进制坐标转换为DMS格式(度,分,秒)
纬度:-22.14354
长:166.4256
我正在寻找一个可以将这些坐标转换为“度,分,秒”格式的公式。其结果将是,在这个例子:
纬度:-22°8' 36.744"
长:166°25' 32.16"
我在哪里能找到这个公式在AS3?
我有我的AIR应用程序,显示如用户的当前位置:AS3 - 公式将十进制坐标转换为DMS格式(度,分,秒)
纬度:-22.14354
长:166.4256
我正在寻找一个可以将这些坐标转换为“度,分,秒”格式的公式。其结果将是,在这个例子:
纬度:-22°8' 36.744"
长:166°25' 32.16"
我在哪里能找到这个公式在AS3?
这是相当简单:绝对数量的integer part是“度”和的绝对值fractional part(即:n-Math.floor(n)
)将被用于“分钟”和“秒”的值。
当您将“小数部分”乘以60
时,则结果值的整数部分为“分钟数”的量。类似地,结果值的小数部分(即:mm - Math.floor(mm)
)乘以60
,将是我已应用自定义舍入例程的“秒”的值(即:myRounding()
的函数:)
function toDMS(dec:Number):String {
var n:Number = Math.abs(dec);
var D:Number = Math.floor(n)*(dec > 0 ? 1 : -1);
var mm:Number = (n-Math.floor(n))*60; // The fractional part * 60
var M:Number = Math.floor(mm);
var S:Number = myRounding((mm - Math.floor(mm))*60, 4);
return D+"° "+M+"' "+S+"\"";
}
function myRounding(num:Number, decimals:uint):Number {
var m:uint = Math.pow(10, decimals);
return Math.round(num * m)/m;
}
trace(toDMS(-22.14354)); // -22° 8' 36.744"
trace(toDMS(166.4256)); // 166° 25' 32.16"