3

可能重复:
mySQL 选择 y 范围内 x 公里/英里内的邮政编码

我有 2 个表,第一个是邮政编码和类别,第二个是邮政编码、纬度和经度。现在我想搜索...在我转到我的问题
Table1 (uk_data)
comp_post_code cat1 cat2之前听到的是表格格式



表2 (uk_pc)
邮政编码 纬度 经度


现在我想通过成本代码搜索 cat1 和 cat2 ......我已经做了......在这里

SELECT * from uk_data where 
cat10 like :comp_post_code  AND (
cat1 like :cat OR
cat2 like :cat)

这给了我这个邮政编码上的结果,但现在我想搜索 5 个地雷和 10 英里区域内的项目,我该怎么做?
我知道如何计算邮政编码之间的距离,但这里是代码

function distance($lat1, $lon1, $lat2, $lon2, $unit) { 

  $theta = $lon1 - $lon2; 
  $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
  $dist = acos($dist); 
  $dist = rad2deg($dist); 
  $miles = $dist * 60 * 1.1515;
  $unit = strtoupper($unit);

  if ($unit == "K") {
    return ($miles * 1.609344); 
  } else if ($unit == "N") {
      return ($miles * 0.8684);
    } else {
        return $miles;
      }
}

但不知道我怎样才能让这个循环到小鸡表 2 以获得 5 或 10 英里的结果......请帮助

4

1 回答 1

0

我认为类似的问题在这里

不确定,但你可以在里面找到的东西PHP也类似于Geokit gem of RoR

于 2012-12-30T08:56:38.940 回答