У меня есть местоположение с широтой и долготой и вы хотите получить новое местоположение, которое находится на расстоянии х метров от этого местоположения под углом d градусов. Это будет противоположно Location.distanceBetween(). Есть ли какой-либо Android API для этого. Я знаю, что я мог бы программировать такую функцию самостоятельно, но мне интересно, есть ли для нее API.Обратное Location.distanceBetween()
ответ
Реализуйте это самостоятельно, но ожидайте, что эта функция появится в какой-то момент, поэтому код соответственно - создайте свою собственную функцию, добавьте несколько модульных тестов.
В будущем добавить следующее вы действуете:
def myFunc(args):
res = # compute stuff
#if(debug):
res2 = # make api call
assert(res = res2)
return res
И спустя некоторое время:
def myFunc(args):
return # make api call
И через некоторое время удалить функцию в целом.
Это называется «первой геодезической» (или иногда «главной геодезической») проблемой, которая, вероятно, поможет вам найти алгоритм в Google, если вам нужно реализовать это самостоятельно.
Существует несколько формул и пример кода (JavaScript) для этого здесь: Movable Type Scripts. Ищите «Точку назначения, заданную расстояние и несущую из начальной точки».
Вот выдержка из JavaScript с сайта:
var lat2 = Math.asin(Math.sin(lat1)*Math.cos(d/R) +
Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng));
var lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1),
Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2));
В приведенном выше коде, d
является расстоянием, brng
является подшипник в градусах, а R
является радиус Земли.
Портирование этого на Java должно быть тривиальным.
Это предполагает, что Земля плоская, верно? –
Я так не думаю, но этот метод далек от точного. Вы можете попробовать это в 3D-сфере здесь: http://earth-api-utility-library.googlecode.com/svn/trunk/extensions/examples/destination.html (требуется веб-плагин Google Планета Земля) –
Это предполагает (поэтому вам нужен «R»), но имеет ошибку, пропорциональную расстоянию, которое вы путешествуете. Абсолютная величина этой ошибки будет большой на больших расстояниях, поэтому она выглядит проблематичной для больших значений. –
Вот обратное его:
SphericalUtil.computeOffsetOrigin(loc1, dist, angle);
Он также имеет функцию distanceBetween:
SphericalUtil.computeDistanceBetween(...);
Lib:
- 1. NumberFormatException в Location.DistanceBetween result
- 2. Как проанализировать результат метода Location.distanceBetween?
- 3. Почему Location.distanceBetween генерирует исключение для параметра результата?
- 4. Почему обратное значение fork() не обратное?
- 5. Обратное геокодирование
- 6. Обратное наследование
- 7. Обратное преобразование
- 8. Обратное геокодирование
- 9. Обратное децимация
- 10. Обратное целое
- 11. Android: Location.distanceBetween единиц и эмулятор не отправляет координаты правильно
- 12. Какой вес является исходным подшипником в возврате из Location.distanceBetween()
- 13. UIScrollView обратное первое изображение
- 14. Обратное значение матрицы
- 15. Обратное преобразование Burrows-Wheeler
- 16. Обратное сообщение Расчет CRC
- 17. Обратное соотношение моделирования CoreData
- 18. CoCreateInstance - Что такое обратное?
- 19. Установить обратное ограничение безопасности
- 20. Обратное изображение с CSS
- 21. Обратное проектирование камеры
- 22. Обратное проектирование C++
- 23. Обратное проектирование структуры данных
- 24. Обратное регулярное выражение?
- 25. Как получить обратное выражение?
- 26. Обратное направление при столкновении
- 27. обратное совпадение нескольких слов
- 28. Требуется обратное прокручивание
- 29. Обратное сопоставление в SQLite
- 30. Обратное regexp в checkstyle
FYI, вы можете захотеть использовать более Теги, подобные «геопространственному» в будущем :-) –
r 30 очков, Роман, и вы можете сами задавать вопросы! ;) –
Это не похоже на это. – CaseyB