谷歌地图,地理位置,jquery,php:在30英里内找到邮政编码

时间:2011-04-04 04:53:20

标签: php jquery google-maps geolocation zipcode

我有一个名字,邮政编码和愿意旅行的距离的csv文件。网络用户将输入他们的邮政编码和他们愿意搜索的距离的英里半径。我正在寻找与该搜索相匹配的csv文件中的人名。我不太熟悉地理定位搜索或当前可用的免费技术(例如谷歌地图)。该网站是用PHP编程的,并使用jquery。我不想要地图,只需要名称的数组或树。有关如何设置的任何建议吗?

CSV示例

"1","John Smith","ZipCode-12345","TravelDistance-30"

解决方案

  1. 设置cronjob以获取csv文件并在mysql db table中转储
  2. 下载了城市/州的数据库表,lat / long,zipcodes
  3. 使用sql公式计算距离并查询匹配项
  4. SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) )
    
         

    * cos(弧度(lng) - 弧度(-122))+ sin(弧度(37))* sin(弧度(   lat))))AS距离FROM标记   距离< 25按距离排序   LIMIT 0,20;

1 个答案:

答案 0 :(得分:3)

基本上,在这样的情况下,我会使用数据库和两个表:

  • cities 的一个表格(或zipcodes - 不确定这些是否与城市相对应);在那张桌子里,你有:
    • ID
    • 城市名称
    • 纬度
    • 经度
  • users的一个表格
    • ID
    • 用户名称
    • zipcode_id:另一个表行的外键 - 用户所在的城市


在尝试计算哪些用户接近给定用户时,您实际上会计算哪些城市接近您的用户所在的城市 - 并从中找出相应的用户。

要确定哪个城市接近给定的城市,我想您可以找到一些公式 - 例如,请参阅以下问题/答案:


请注意,在初始化城市/邮政编码数据库时,您必须找出每个城市的纬度和经度 - 我想您可以找到一些数据库,其中包含互联网上所有城市的坐标。

(另一种解决方案是向Google地图的地理编码服务发送请求 - 但如果我没记错的话,他们的服务条款就不允许这样做了)