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