Kini terdapat jadual merekod koordinat pengguna (menggunakan API Baidu), dengan dua medan direkodkan, seperti koordinat (116.307852, 40.057031).
Sekarang apa yang perlu kita lakukan untuk mengetahui semua pengguna dalam jarak 1km dari pengguna ini?
Saya fikir saya boleh pergi terus:
select *
from table
where x between 116.307852-1km and 116.307852+1km
and y between 40.057031-1km and 40.057031+1km
Saya tidak biasa dengan API koordinat, terima kasih kerana membantu saya melihat.
Cari jarak antara dua titik pada Peta Baidu
Jika pangkalan data anda ialah MySQL 5.7, anda boleh menggunakan fungsi spatial: ST_Distance_Sphere() untuk mengira jarak terpendek (unit: meter) antara dua titik di bumi.
adalah seperti berikut:
MySQL versi 5.6 boleh menggunakan ST_Distance() untuk mengira jarak. Perlu diingat bahawa ia mengira jarak garis lurus antara dua titik koordinat 2 dimensi, dan hasilnya perlu didarab dengan 111195 (jejari bumi 6371000*PI/180) untuk menukar nilai kepada meter.