SQlite Получение ближайших местоположений (с широтой и долготой)

У меня есть данные с широтой и долготой, хранящиеся в моей базе данных SQLite, и я хочу получить ближайшие местоположения к параметрам, которые я ввел (например, мое текущее местоположение - широта / долгота и т. Д. .).

Я знаю, что это возможно в MySQL, и я провел довольно много исследований, выясняя, что SQLite нужна специальная внешняя функция для формулы Хаверсина (вычисление расстояния на сфере), но я не нашел ничего, что было бы написано на Ява так и работает.

Кроме того, если я хочу добавить пользовательские функции, мне понадобится org.sqlite .jar (для org.sqlite.Function ), и это добавляет ненужный размер приложению. .

С другой стороны, мне нужна функция Order by из SQL, потому что отображение расстояния - не такая уж большая проблема - я уже сделал это в своем пользовательском SimpleCursorAdapter, но я не могу отсортировать данные , потому что в моей базе данных нет столбца расстояния. Это будет означать обновление базы данных каждый раз при изменении местоположения, а это потеря заряда батареи и производительности. Так что, если у кого-то есть идея отсортировать курсор по столбцу, которого нет в базе данных, я тоже был бы благодарен!

Я знаю, что существует множество приложений для Android, которые используют эту функцию, но не могли бы вы объяснить волшебство.

Между прочим, я нашел такую ​​альтернативу: Запрос на получение записей на основе радиуса в SQLite?

Предлагается создать 4 новых столбца для значений cos и sin для lat и lng, но есть ли другие , не такой уж избыточный способ?

82
задан Community 23 May 2017 в 12:10
поделиться