यहाँ मुझे मिला सबसे अच्छा तरीका है। बेशक यह आवश्यक होगा कि आपके पास डेटाबेस में आपके सभी ज़िपकोड लेट/लॉन एन्कोडेड हों।
// get all the zipcodes within the specified radius - default 20
function zipcodeRadius($lat, $lon, $radius)
{
$radius = $radius ? $radius : 20;
$sql = 'SELECT distinct(ZipCode) FROM zipcode WHERE (3958*3.1415926*sqrt((Latitude-'.$lat.')*(Latitude-'.$lat.') + cos(Latitude/57.29578)*cos('.$lat.'/57.29578)*(Longitude-'.$lon.')*(Longitude-'.$lon.'))/180) <= '.$radius.';';
$result = $this->db->query($sql);
// get each result
$zipcodeList = array();
while($row = $this->db->fetch_array($result))
{
array_push($zipcodeList, $row['ZipCode']);
}
return $zipcodeList;
}
आपको बस इस फ़ंक्शन को छोड़ने में सक्षम होना चाहिए। उस ज़िपकोड का $lat और $lon पास करें जिसके लिए आप त्रिज्या चाहते हैं, वैकल्पिक त्रिज्या शामिल करें, और वापस ज़िपकोड की सूची प्राप्त करें।
आप उन सभी उपयोगकर्ताओं को प्राप्त करने के लिए बहुत आसानी से इसे संशोधित कर सकते हैं जहां zipcode IN (radius_sql) है और अपनी सूची के उपयोगकर्ताओं को वापस प्राप्त करें।
हैप्पी कोडिंग!