【发布时间】:2013-02-18 16:28:14
【问题描述】:
我有一个已放入 javascript 数组的商店列表。我也有他们的地址。
我需要创建一个自动完成功能,它允许我输入城市名称并显示离该位置最近的 3 个。我想它需要以某种方式与谷歌的 api 接口,但不确定从哪里开始。
我已经在 ajax 脚本上使用了实际的自动完成 jquery 东西,但我不知道如何找到最近的东西。
【问题讨论】:
标签: php jquery geolocation google-api
我有一个已放入 javascript 数组的商店列表。我也有他们的地址。
我需要创建一个自动完成功能,它允许我输入城市名称并显示离该位置最近的 3 个。我想它需要以某种方式与谷歌的 api 接口,但不确定从哪里开始。
我已经在 ajax 脚本上使用了实际的自动完成 jquery 东西,但我不知道如何找到最近的东西。
【问题讨论】:
标签: php jquery geolocation google-api
你需要店铺的经纬度位置,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 来每隔一小时左右删除这些表。
所以过程:
请注意,谷歌只允许有限数量的数据请求。尽管这个数字很大(我相信每天有 25.000 个请求),但还是建议存储您的商店和用户的经纬度位置。还可以提高速度。
我做了类似的事情,我在将位置插入数据库的那一刻提取了纬度/经度位置,并将其插入到单独的每个邮政编码的纬度/经度表中。
【讨论】: