AS3 - 将十进制坐标转换为 DMS 格式(度、分、秒)的公式

AS3 - Formula to convert decimal coordinates to DMS format (Degrees, Minutes, Seconds)

我的 AIR 应用程序可以显示用户的当前位置,例如:

纬度:-22.14354
长:166.4256

我正在寻找可以将这些坐标转换为 "Degrees, Minutes, Seconds" 格式的公式。对于此示例,结果将是:

纬度:-22° 8' 36.744"
长:166° 25' 32.16"

我在哪里可以找到 AS3 中的这个公式?

相当简单:integer part of the absolute number is the absolute value of the "Degrees" and the fractional part(即:n-Math.floor(n))将用于 "Minutes" 和 "Seconds" 的值。

当您将"fractional part"乘以60时,结果值的整数部分就是"Minutes"的数量。类似地,结果值的小数部分(即:mm - Math.floor(mm))乘以 60 将是 "Seconds" 的值,我对其应用了自定义舍入例程(即: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"