Saya memiliki data dengan lintang dan bujur yang disimpan dalam database SQLite saya, dan saya ingin mendapatkan lokasi terdekat dengan parameter yang saya masukkan (mis. Lokasi saya saat ini - lat / lng, dll.).
Saya tahu bahwa ini dimungkinkan di MySQL, dan saya telah melakukan cukup banyak penelitian bahwa SQLite memerlukan fungsi eksternal khusus untuk rumus Haversine (menghitung jarak pada bola), tetapi saya belum menemukan apa pun yang tertulis di Java dan berfungsi .
Selain itu, jika saya ingin menambahkan fungsi khusus, saya memerlukan org.sqlite
.jar (untuk org.sqlite.Function
), dan itu menambahkan ukuran yang tidak perlu ke aplikasi.
Sisi lain dari ini adalah, saya memerlukan Urutan berdasarkan fungsi dari SQL, karena menampilkan jarak saja tidak terlalu menjadi masalah - Saya sudah melakukannya di SimpleCursorAdapter kustom saya, tetapi saya tidak dapat mengurutkan data, karena saya tidak memiliki kolom jarak di database saya. Itu berarti memperbarui database setiap kali lokasi berubah dan itu hanya membuang-buang baterai dan kinerja. Jadi, jika seseorang memiliki ide untuk mengurutkan kursor dengan kolom yang tidak ada di database, saya juga akan berterima kasih!
Saya tahu ada banyak sekali aplikasi Android di luar sana yang menggunakan fungsi ini, tetapi bisakah seseorang menjelaskan keajaibannya.
Omong-omong, saya menemukan alternatif ini: Kueri untuk mendapatkan catatan berdasarkan Radius di SQLite?
Ini menyarankan untuk membuat 4 kolom baru untuk nilai cos dan sin dari lat dan lng, tetapi adakah cara lain yang tidak terlalu berlebihan?