Menghitung jarak cukup mahal secara komputasi, seperti yang dikatakan orang lain. Mengembalikan set data yang besar juga bukan ide yang bagus - khususnya mengingat performa PHP tidak terlalu bagus.
Saya akan menggunakan heuristik, seperti memperkirakan jarak dengan penambahan dan pengurangan sederhana.
Cukup telusuri db dengan insiden dalam rentang tersebut (efektif persegi, bukan lingkaran), lalu Anda dapat mengerjakannya dengan PHP.
EDIT :Berikut alternatifnya; perkiraan yang jauh lebih murah secara komputasi:
Perkiraan jarak dalam mil:
sqrt(x * x + y * y)
where x = 69.1 * (lat2 - lat1)
and y = 53.0 * (lon2 - lon1)
Anda dapat meningkatkan akurasi perhitungan perkiraan jarak ini dengan menambahkan fungsi matematika kosinus:
Peningkatan perkiraan jarak dalam mil:
sqrt(x * x + y * y)
where x = 69.1 * (lat2 - lat1)
and y = 69.1 * (lon2 - lon1) * cos(lat1/57.3)
Sumber:http://www.meridianworlddata.com/Distance-Calculation.asp
EDIT 2 :Saya menjalankan banyak pengujian dengan kumpulan data yang dibuat secara acak.
- Perbedaan akurasi untuk ketiga algoritme minimal, terutama pada jarak pendek
- Algoritme paling lambat (yang memiliki banyak fungsi trigonometri) 4x lebih lambat dari dua lainnya.
Pasti tidak layak. Lakukan saja dengan perkiraan.
Kode ada di sini:http://pastebin.org/424186