AS3 - 将小数点坐标转换为DMS格式的公式(度,分,秒)

时间:2016-09-27 23:42:40

标签: actionscript-3 formula

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

lat:-22.14354
长:166.4256

我正在寻找一种可以将这些坐标转换为“度,分,秒”格式的公式。结果将是,例如:

lat:-22°8'36.744“
长:166°25'32.16“

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

1 个答案:

答案 0 :(得分:1)

这很简单:绝对数字的integer part是"度数"的绝对值。并且fractional part(即:60,)将用于"分钟"的值。和"秒"。

当你乘以"小数部分"然后,通过mm - Math.floor(mm),结果值的整数部分是" Minutes"的数量。类似地,结果值的小数部分(即:60,)乘以myRounding(),将是" Seconds"的值。我已经应用了自定义舍入程序(即: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" 的功能:)

if(!CSVToEXCEL.pw.equals("NA")){

                if(CSVToEXCEL.oformat.equals("xlsx")){
                    POIFSFileSystem fs = new POIFSFileSystem();
                    EncryptionInfo info = new EncryptionInfo(fs, EncryptionMode.agile);

                    Encryptor enc = info.getEncryptor();
                    enc.confirmPassword(CSVToEXCEL.pw);

                    OPCPackage opc = OPCPackage.open(new File(CSVToEXCEL.opath), PackageAccess.READ_WRITE);
                    OutputStream os = enc.getDataStream(fs);
                    opc.save(os);
                    opc.close();

                    FileOutputStream fos = new FileOutputStream(CSVToEXCEL.opath);
                    fs.writeFilesystem(fos);
                    System.out.println("File created..."+CSVToEXCEL.opath);
                    fos.close();    
            }
                else {
                    // if file is of '.xls' format
                    System.out.println("xls cannot be Encrypted...");
                    ZipAndProtectReport zipAndProtectReport = new ZipAndProtectReport();
                    String xlsoutputzip = zipAndProtectReport.ZipAndProtectMethod(CSVToEXCEL.opath,CSVToEXCEL.pw);
                    System.out.println("Zip Created..... path: "+xlsoutputzip);             
                    }
            }

        else 
            System.out.println("File Created....."+CSVToEXCEL.opath);
    }