Я пытаюсь выяснить, можете ли вы ввести sexagesimal вход в качестве местоположения, точно так же, как вы можете дать десятичный ввод в андроиде следующим образом:
// Decimal input
double src_lat = 46.550952;
double src_long = 15.651366;
GeoPoint srcGeoPoint = new GeoPoint((int) (src_lat * 1E6),
(int) (src_long * 1E6));
поэтому мой вопрос заключается в следующем - есть способ ввода чисел шестидесятеричных и не десятичные? У меня есть номера в моей базе данных в виде "46.550952, 15.651366 и т.д.". но когда я вводил их в виде десятичных знаков, это явно дает мне неправильное местоположение на Картах Google, что является проблемой.
Я был бы очень благодарен за любые ответы или выводы.
--- EDIT ---
Я просто сдался и сделал функцию, которая превращает sexagesimal в decimal =) Так как все строки (числа), которые я получаю, составляют 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;
}
почему бы просто написать функцию для преобразования между двумя?
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) { ... }