【问题标题】:google maps, geolocation, jquery, php: find zip codes within 30 miles谷歌地图、地理位置、jquery、php:查找 30 英里内的邮政编码
【发布时间】:2011-07-28 22:15:37
【问题描述】:

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

CSV 示例

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

解决方案

  1. 设置一个 cronjob 来抓取 csv 文件并转储到 mysql db 表中
  2. 已下载城市/州、纬度/经度、邮政编码的数据库表
  3. 使用 sql 公式计算距离并查询匹配项
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) )

* cos( 弧度( lng ) - 弧度(-122) ) + sin( 弧度(37) ) * sin( 弧度( lat ) ) ) ) AS 距离标记 距离

【问题讨论】:

  • 将cvs文件存入db会容易得多,否则当cvs文件得到lrg时,无论如何要花更长的时间才能找到结果
  • 好的,很好。我正在制定一个 cron 来解决这个问题。关于如何在彼此相距 30 英里的范围内找到拉链的任何想法?

标签: php jquery google-maps geolocation zipcode


【解决方案1】:

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

  • cities 的一张表(或邮政编码——不确定这些是否对应城市);在该表中,您将拥有:
    • 身份证
    • 城市名称
    • 纬度
    • 经度
  • users 一张表
    • 身份证
    • 用户名
    • zipcode_id : 另一个表行的外键 -- 用户居住的城市


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

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


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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多