当前位置: 首页 > 面试题库 >

php / mysql邮政编码邻近搜索

锺离宸
2023-03-14
问题内容

我只是在寻找有关最佳方法的建议…

我需要创建一个搜索功能,以在邮政编码的50英里半径内搜索“用户”。我有一个邮政编码表,其中包含所有美国邮政编码及其纬度/经度,但我只是想找出构造和查询数据的最佳方式…

是否应在用户表中添加纬度/经度列,并在给定邮政编码范围内的所有用户查询它?还是应该在邮政编码表中查询半径范围内的所有邮政编码,然后在用户表中查询所有具有结果(邮政编码)的用户?要么…
???目前,我愿意接受任何建议!

谢谢!


问题答案:

这是我找到的最好方法。当然,这需要您在数据库中对所有经纬度的邮政编码进行编码。

// 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传递给它,包括可选的半径,并返回一个邮政编码列表。

您可以很容易地对其进行修改,以使所有用户的邮政编码都位于(radius_sql),并将您的列表用户带回来。

编码愉快!



 类似资料:
  • 问题内容: 我正在编写一个特定于美国的Web应用程序,因此其他国家/地区用于邮政编码的格式并不重要。我有一份我们要加载到包含以下内容的数据库表中的邮政编码列表: 5位美国邮政编码 纬度 经度 usps分类代码 状态码 城市 邮政编码是主键,因为这是我要查询的内容。我开始使用中型int 5,但是它会截断前导零的邮政编码。 我考虑使用char5,但担心对char变量建立索引会对性能造成影响。 所以我的

  • 问题内容: 应用程序如何执行邻近搜索?例如,用户输入邮政编码,然后应用程序按距离排序列出20英里内的所有企业。 我想在PHP和MySQL中构建类似的东西。这种方法正确吗? 获取我感兴趣的位置的地址并将其存储在数据库中 使用Google的地理编码服务对所有地址进行地理编码 编写包含Haversine公式的数据库查询以进行邻近搜索和排序 这个可以吗?在第3步中,我将计算每个查询的接近度。有一个PROX

  • 本文向大家介绍solr 邻近搜索,包括了solr 邻近搜索的使用技巧和注意事项,需要的朋友参考一下 示例 name:"john doe"~1 搜索特定术语距离(〜1)内的多个术语,i.e将查找包含john匿名doe而不包含john第二名doe的文本

  • 问题内容: 我正在使用Google Maps API v3和javascript将地图添加到网站中。 我有一个地址列表,并已在地图上成功绘制了它们。当用户输入邮政编码时,地图将重新定位在他们的位置,显示最接近该点的标记。现在,我需要创建一个最接近其邮政编码的3或5个位置的列表视图,并带有用于行驶方向的链接。我被困住了…并且愿意提出建议。 问题答案: 通常的解决方案是使用google.maps.ge

  • 问题内容: 在我的MySQL InnoDB数据库中,我有要清除的脏邮政编码数据。 邮政编码是我的全部5位数字(例如“ 90210”)时的原始邮政编码数据。 但是由于某种原因,我在数据库中注意到,对于以“ 0”开头的邮政编码,0已被删除。 因此,“ 纽约Holtsville的 ”与邮政编码“ ”存储在我的数据库“ ” 和 “ 戴德姆,MA ”与邮政编码“ ”存储在我的数据库为“ ”。 我可以使用哪种

  • 问题内容: 我从此页面上获取了邮政编码以及它们的经度/纬度等数据库 。它具有以下字段: ZIP,LATITUDE,LONGITUDE,城市,州,县,ZIP_CLASS 数据在文本文件中,但是我将其插入到MySQL表中。我现在的问题是,我如何利用以上字段来计算用户可以在网站上输入的两个邮政编码之间的距离?PHP中的工作代码将不胜感激 问题答案: 您也可以尝试点击网络服务以计算距离。让别人来做繁重的工