Menentukan Kehampiran dalam Radius Diberi Latitud dan Longitud
Bayangkan senario di mana borang membenarkan pengguna memasukkan longitud dan latitud mereka. Pada masa yang sama, pangkalan data mengandungi jadual yang menempatkan senarai komprehensif koordinat geografi. Tugas di tangan melibatkan mengenal pasti mana-mana titik dalam radius 15 batu dari koordinat pengguna.
Penyelesaian:
Untuk mencapainya, kami memanfaatkan konsep pengiraan jarak antara dua titik menggunakan formula khusus:
function get_distance($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') { $theta = $longitude1 - $longitude2; $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta))); $distance = acos($distance); $distance = rad2deg($distance); $distance = $distance * 60 * 1.1515; switch($unit) { case 'Mi': break; case 'Km' : $distance = $distance * 1.609344; } return (round($distance,2)); }
Sebagai alternatif, pertanyaan pangkalan data boleh digunakan:
$query = "SELECT *,(((acos(sin((".$latitude."*pi()/180)) * sin((`Latitude`*pi()/180))+cos((".$latitude."*pi()/180)) * cos((`Latitude`*pi()/180)) * cos(((".$longitude."- `Longitude`)* pi()/180))))*180/pi())*60*1.1515 ) as distance FROM `MyTable` HAVING distance >= ".$distance.";
Atas ialah kandungan terperinci Bagaimana Mencari Titik Dalam Jejari Menggunakan Latitud dan Longitud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!