Saya memiliki tabel mySQL dengan nama pengguna, lintang dan bujur dari pengguna. Saya ingin mendapatkan daftar pengguna yang berada di dalam lingkaran atau kuadrat dari garis lintang dan bujur tertentu dengan jarak tertentu. Misalnya input saya Lat = 78,3232 dan Panjang = 65,3234 dan jarak = 30 mil. Saya ingin mendapatkan daftar pengguna yang berada dalam jarak 30 mil dari titik 78.3232 dan 65.3234. Apakah mungkin untuk menyelesaikan ini dengan satu permintaan? Atau bisakah Anda memberi saya petunjuk untuk mulai menyelesaikan pertanyaan ini? Saya baru mengenal informasi berbasis geo.
20
Jawaban:
Pernyataan SQL yang akan menemukan 20 lokasi terdekat yang berada dalam radius 30 mil ke 78,3232, 65,3234 koordinat. Ini menghitung jarak berdasarkan garis lintang / garis bujur dari baris itu dan garis lintang / garis bujur target, dan kemudian meminta hanya baris di mana nilai jaraknya kurang dari 30 mil, memesan seluruh kueri berdasarkan jarak, dan membatasinya hingga 20 hasil. Untuk mencari menurut kilometer bukannya mil, ganti 3959 dengan 6371.
Ini menggunakan Google Maps API v3 dengan backend MySQL yang sudah Anda miliki.
https://developers.google.com/maps/articles/phpsqlsearch_v3#findnearsql
sumber
Jawaban Mapperz tidak valid. Sinus harus dihitung dari garis lintang dan BUKAN dari garis bujur. Jadi pernyataan SQL yang benar adalah:
sumber
Mungkin basis untuk membuat fungsi .. sehingga Anda dapat menggunakannya kembali daerah lain. Juga akan membuat kueri Anda sedikit lebih bersih ... Setidaknya itu adalah 2 sen saya.
sumber
Inilah varian kueri saya, sepertinya sedikit lebih mudah ( http://dexxtr.com/post/83498801191/how-to-determine-point-inside-circle-using-mysql )
sumber