0

我有一个充满地址的数据库表,该表有 4,000 多条记录

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

4

2 回答 2

1

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

保存这 4000 个地址中的 LatLng 对您没有任何好处,因为您仍然需要向 google 询问从用户地址到每个地址的距离。即使您拥有所有 LatLng(您需要map),您也无法自己计算。

我想您可以保存每个用户输入,并保存到每个位置 4000 距离的地址……但这仅对第二次返回该站点的用户有用。

...

好的,我有这个想法:

  1. 请存储 4000 个位置中每个位置的 LatLng。
  2. 存储所有 4000 个位置之间的距离(这样,如果您选择一个,您可以获得所有其他位置的列表,按距离排序)。
  3. 当您从用户那里获取地址时,将其转换为 LatLng,并使用简单的数学运算找到直线上最近的位置。
  4. 使用从数据库到所有其他位置的距离列表,要求谷歌获取到该位置的实际距离,以及到最接近它的位置的大约 10-20 距离;其余的使用距数据库最近的距离。

这样,您可以从用户输入中获得到最近位置的前 10-20 个准确距离,其余的将从数据库中提取——它们实际上是从最近位置到其他位置的距离。

于 2013-05-30T04:19:47.517 回答
0

我相信由于地址没有太大变化,您可以在某处缓存纬度/经度并参考这些地址而不是重复请求。当然,如果还有其他缓解条件,请详细说明。

于 2013-05-30T02:57:38.633 回答