У меня есть данные с широтой и долготой, хранящиеся в моей базе данных SQLite, и я хочу получить ближайшие местоположения к параметрам, которые я ввел (например, мое текущее местоположение - широта / долгота и т. Д. .).
Я знаю, что это возможно в MySQL, и я провел довольно много исследований, выясняя, что SQLite нужна специальная внешняя функция для формулы Хаверсина (вычисление расстояния на сфере), но я не нашел ничего, что было бы написано на Ява так и работает.
Кроме того, если я хочу добавить пользовательские функции, мне понадобится org.sqlite
.jar (для org.sqlite.Function
), и это добавляет ненужный размер приложению. .
С другой стороны, мне нужна функция Order by из SQL, потому что отображение расстояния - не такая уж большая проблема - я уже сделал это в своем пользовательском SimpleCursorAdapter, но я не могу отсортировать данные , потому что в моей базе данных нет столбца расстояния. Это будет означать обновление базы данных каждый раз при изменении местоположения, а это потеря заряда батареи и производительности. Так что, если у кого-то есть идея отсортировать курсор по столбцу, которого нет в базе данных, я тоже был бы благодарен!
Я знаю, что существует множество приложений для Android, которые используют эту функцию, но не могли бы вы объяснить волшебство.
Между прочим, я нашел такую альтернативу: Запрос на получение записей на основе радиуса в SQLite?
Предлагается создать 4 новых столбца для значений cos и sin для lat и lng, но есть ли другие , не такой уж избыточный способ?