This article mainly introduces the implementation of PHP's query of nearby persons and their distance, and involves php mathematical computation related skills, which has some reference value, for more information, see the example in this article. We will share this with you for your reference. The details are as follows:
<? Php // Obtain the four points around this point $ distance = 1; // The range (in kilometers) $ lat = 113.873643; $ lng = 22.573969; define ('Earth _ RADIUS ', 6371); // The Earth's radius. the average radius is 6371 km $ dlng = 2 * asin (sin ($ distance/(2 * EARTH_RADIUS )) /cos (deg 2rad ($ lat); $ dlng = rad2deg ($ dlng); $ dlat = $ distance/EARTH_RADIUS; $ dlat = rad2deg ($ dlat ); $ squares = array ('left-top' => array ('lat' => $ lat + $ dlat, 'lng '=> $ lng-$ dlng ), 'Right-top' => array ('lat' => $ lat + $ dlat, 'lng '=> $ lng + $ dlng ), 'Left-bottom' => array ('lat' => $ lat-$ dlat, 'lng '=> $ lng-$ dlng ), 'Right-bottom' => array ('lat' => $ lat-$ dlat, 'lng '=> $ lng + $ dlng )); print_r ($ squares ['left-top'] ['lat']); // query matched records from the database $ info_ SQL = "select * from 'A' where lat <> 0 and lat >{$ squares ['right-bottom '] ['lat ']} and lat <{$ squares ['left-top'] ['lat']} and lng> {$ squares ['left-top'] ['lng']} and lng <{$ squares ['right-bottom '] ['lng']} "; // Obtain the distance between two points. function getDistanceBetweenPointsNew ($ latitude1, $ longitude1, $ latitude2, $ longitude2) {$ theta = $ longitude1-$ longitude2; $ miles = (sin (deg 2rad ($ latitude1) * sin (deg 2rad ($ latitude2) + (cos (deg 2rad ($ latitude1 )) * cos (deg 2rad ($ latitude2) * cos (deg 2rad ($ theta); $ miles = acos ($ miles); $ miles = rad2deg ($ miles ); $ miles = $ miles * 60*1.1515; $ feet = $ miles * 5280; $ yards = $ feet/3; $ kilometers = $ miles * 1.609344; $ meters = $ kilometers * 1000; return compact ('Miles ', 'feet', 'yzs', 'kilometers ', 'meters ');} $ point1 = array ('lat' => 40.770623, 'long' =>-73.964367); $ point2 = array ('lat' => 40.758224, 'Long' =>-73.917404); $ distance = getDistanceBetweenPointsNew ($ point1 ['lat'], $ point1 ['long'], $ point2 ['lat'], $ point2 ['long']); foreach ($ distance as $ unit => $ value) {echo $ unit. ':'. number_format ($ value, 4 ).'
';}?>