如何使用Google Maps API基于距离搜索?

3
这里的问题是...我有一个字段,用户可以输入他们的地址(将通过Google Maps API进行地理编码)。
我的数据库中有几个小部件的地址(保存为地址..也可以轻松地进行地理编码)。
我需要的是,用户输入他们的地址,然后根据距离从他们的地址列出我的小部件列表。我有成千上万个小部件的地址,而用户的地址数量显然是无限的。
有什么想法吗?
谢谢。
4个回答

3
SELECT latitude, longitude, SQRT( POW( 69.1 * ( latitude - 52.58 ) , 2 ) + 
POW( 69.1 * ( - 1.12 - longitude ) * COS( latitude / 57.3 ) , 2 ) ) AS distance 
FROM location ORDER BY distance

点击这里他们提供了多种计算距离的方法 - 选择最适合您的方法。


2

1

你不能使用谷歌来计算你的地理距离过滤。要做到这一点,你必须将你的数据发送给他们,让他们存储它,并为你查询。他们现在或将来可能提供这项服务,但我没有听说过。

按照法律性、能力强、费用高的顺序:

A/ 当客户在你的网站上输入单个兴趣点或位置时,收集地理坐标。然后使用自己的搜索引擎并按距离从一个点搜索。可能违反与谷歌的协议,但他们确实提到了“缓存”结果以减轻服务器负载。(原因是我个人的猜测。)

B/ 使用谷歌进行批量地理编码,可能每次最多一个,每天每个站点的IP地址最多5000次。甚至不确定是否违反使用协议。

C/ 购买地理编码服务合同,并存储他们为您编码的内容。

D/ 购买地理编码库并进行自己的地理编码。


0

这对于2个点来说还好,但是当用户输入他/她的地址时,我如何实时地为所有地址执行此操作? - Shamoon
通过使用 for .. next 循环?您的小部件已经被地理编码并存储在数据库中。在通过 API 调用对用户地址进行地理编码之后,这只是数学问题。即使有成千上万个地址,也只需要几秒钟的时间。 - ghoppe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接