我的AIR应用程序显示用户的当前位置,如:
lat:-22.14354
长:166.4256
我正在寻找一种可以将这些坐标转换为“度,分,秒”格式的公式。结果将是,例如:
lat:-22°8'36.744“
长:166°25'32.16“
我在哪里可以在AS3中找到这个公式?
答案 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);
}