0

我有一个我放在 javascript 数组中的商店列表。我也有他们的地址。

我需要创建一个自动完成功能,它允许我输入一个城市名称,并显示离该位置最近的 3 个。我想它需要以某种方式与谷歌的 api 接口,但不确定从哪里开始。

我有实际的自动完成 jquery 东西在一个 ajax 脚本上工作,但我不知道如何让东西位于最近的位置。

4

1 回答 1

0

您需要商店的纬度/经度位置,https://developers.google.com/maps/documentation/geocoding/然后您需要用户的经度/纬度位置,通过一些相对简单的数学计算距离在这两点之间:

$distance = round((6371*3.1415926*sqrt(($lat2-$lat1)*($lat2-$lat1) + 
cos($lat2/57.29578)*cos($lat1/57.29578)*($lon2-$lon1)*($lon2-$lon1))/180), 1);

如果您有大量商店和大量用户,我建议将这些距离缓存在 mysql 表中,您必须为数据库中的每个商店执行此操作。因此,您为每个请求此的邮政编码创建一个表,并设置一个 cron 以每隔一小时左右删除这些表。

所以过程:

  1. 用户询问最近的商店
  2. 您通过 google api(或您自己的存储)获取他的位置
  3. 检查是否有他所在位置的表格
  4. 如果是,直接给他结果,如果不是生成表格并给他结果

请注意,谷歌只允许有限数量的数据请求。尽管这个数字很大(我相信每天有 25.000 个请求),但还是建议存储您的商店和用户的经纬度位置。也会提高速度。

我做了类似的事情,我在将位置插入数据库的那一刻获取了纬度/经度位置,并将其插入到单独的每个邮政编码纬度/经度表中。

于 2013-02-18T16:50:06.383 回答