Inilah cara terbaik yang saya temukan. Tentu saja Anda harus memiliki semua kode pos lat/lon yang dikodekan dalam database.
// 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;
}
Anda seharusnya bisa memasukkan fungsi ini saja. Berikan $lat dan $lon dari kode pos yang Anda inginkan radiusnya, sertakan radius opsional, dan dapatkan kembali daftar kode pos.
Anda dapat dengan mudah memodifikasi ini untuk mendapatkan semua pengguna di mana kode pos IN (radius_sql) dan mendapatkan daftar pengguna Anda kembali.
Selamat Mengkode!