我想知道你是否可以将一个六十进制输入作为一个位置,就像你可以在android中给出十进制输入一样:
// Decimal input
double src_lat = 46.550952;
double src_long = 15.651366;
GeoPoint srcGeoPoint = new GeoPoint((int) (src_lat * 1E6),
(int) (src_long * 1E6));
所以我的问题如下 - 有没有办法输入 sexagesimal 数字,而不是 十进制 ? 我的数据库中有六十进制数字,格式为“46.550952,15.651366等” 但是当我以小数形式输入它时,它显然会在Google地图上给我错误的位置,这是一个问题。
我真的很感激任何答案或发现。
--- 编辑 ---
我只是放弃并制作了一个将sexagesimal变成十进制的函数=)因为我得到的所有字符串(数字)都是10个字符长,所以我可以简单地将分数和秒数子串起来。
代码如下:
private double turnSexagesimalToDecimal(String number) {
double sumDivMinutes = 0;
String degree = number;
String degrees = degree.substring(0, 2);
String minutes = degree.substring(3, 5);
String second1 = degree.substring(5, 7);
String second2 = degree.substring(7);
String seconds = second1 + "." + second2;
double divideSeconds = Double.parseDouble(seconds) / 60;
sumDivMinutes = (Double.parseDouble(minutes) + divideSeconds) / 60;
sumDivMinutes = (double)Math.round(sumDivMinutes * 1000000) / 1000000;
sumDivMinutes = sumDivMinutes + Double.parseDouble(degrees);
return sumDivMinutes;
}
答案 0 :(得分:0)
为什么不写一个函数来在两者之间进行转换?
double decimalToSexagecimal(double decimalDegrees) {
String dd = new String(decimalDegrees);
String[] ddArr = dd.split(".");
// .75/100 = 75, .75 * 60/100
double sd = Double.valueOf(ddArr).doubleValue() * 60 / 100;
return Double.valueOf(ddArr[0] + "." + sd);
}
sexagecimalToDecimal(double sexagecimalDegreees) { ... }