对一个很长的列表进行地理编码

时间:2013-05-30 02:55:03

标签: php mysql geocoding

我有一个填充了地址的数据库表,该表超过4,000条记录

我想知道获取地址的最佳方法是将其与搜索字段进行比较,并按距离搜索字段位置对其进行排序? GoogleAPI文档说请求限制为每天25,000,这意味着我每天只能进行7次搜索?

2 个答案:

答案 0 :(得分:1)

在我看来 - 是的。谷歌很聪明地计算2 LatLng之间的距离,因为使用街道和道路给你距离,而不是2点之间的直线距离(这在php中很容易计算)。

保存那些4000个地址中的LatLng对你没有任何好处,因为你仍然需要向google询问用户地址与其中每个地址之间的距离。即使你拥有所有LatLng(你需要地图),你也无法自己计算。

我猜你可以保存每个用户输入,并将该地址保存到每个位置4000个距离......但这对于第二次返回该网站的用户来说非常有用。

...

好的,我有这个想法:

  1. 存储4000个地点中每个地点的LatLng。
  2. 存储所有4000个位置之间的距离(如果您选择一个,则可以获取所有其他位置的列表,按距离排序)。
  3. 当您从用户那里获得地址时,将其转换为LatLng,并使用简单的数学方法在行中找到最近的位置。
  4. 使用距离数据库中所有其他位置的距离列表,要求google获取到该位置的准确距离,并且距离最近的位置大约10-20;其余的使用距离数据库最近的距离。
  5. 通过这种方式,您可以获得距离用户输入最近的位置的前10-20个精确距离,其余的将从数据库中提取 - 它们实际上距离最近的位置到其他地方。

答案 1 :(得分:0)

我相信,由于地址变化不大,您可以将纬度/经度缓存到某处并引用它们而不是重复请求。当然,请详细说明是否还有其他缓解条件。