0

我有一个包含姓名、邮政编码和愿意旅行的距离的 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 ) ) ) ) 作为距离标记的距离,距离 < 25 按距离限制 0、20 排序;

4

1 回答 1

3

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

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


当试图计算哪些用户接近给定的用户时,您实际上会计算哪些城市接近您的用户所在的城市——然后从中找出相应的用户。

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


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

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

于 2011-04-04T05:07:37.733 回答