27 февраля, 2014 | Автор:
Naik | Категория:
Android,
Java |
Нет комментариев »
При работе с картами или GPS мы можем получить долготу (longitude) и широту (latitude) в виде виде десятичных грудусов. Например, 37.422006 (широта) и -122.084095 (долгота). Это где-то в Силиконовой долине. Нам может потребоваться перевести эти десятичные градусы в градусы, минуты и секунды, т.е. в формат более понятный человеку.
Для справки:
- Положительное значение широты - северная широта
- Отрицительное значание широты - южная широта
- Положительное значение долготы - восточная долгота
- Отрицательное значение долготы - западная долгота
Преобразование будет реализовано в виде функции, принимающей в качестве параметра десятичный градуc (
double), а в качестве результата возвращающая строку вида:
X° Y′ Z″, где
X - градусы,
Y - минуты и
Z - секунды.
Реализация на Java:
public static String doubleToDegree(double value){
int degree = (int) value;
double rawMinute = Math.abs((value % 1) * 60);
int minute = (int) rawMinute;
int second = (int) Math.round((rawMinute % 1) * 60);
return String.format("%d° %d′ %d″", degree,minute,second);
}
Пример использования:
System.out.println(doubleToDegree(37.422006));//Результат: 37° 25′ 19″
System.out.println(doubleToDegree(-122.084095));//Результат: -122° 5′ 3″
Результаты можно интерпретировать следующим образом:
37° 25′ 19″ означает 37 градусов 25 минут 19 секунд северной широты.
-122° 5′ 3″ означает 122 градуса 5 минут 3 секунды западной долготы.
Добавить комментарий