动态地理编码与数据库查找

时间:2013-05-26 10:28:48

标签: ruby-on-rails google-maps geocoding

我正在开始一个与Google地图紧密集成的新rails项目。当用户搜索某个城市时,我会尝试决定是否即时对地址进行地理编码(使用Google的地理编码API),或者在预先填充了lat / long的数据库中查找该城市。在我有lat / long之后,我将在Google Maps上绘制它。

您认为哪种表现更好?通过数据库查找,该表必须非常大,以便考虑到我需要的所有城市,无论如何,对于我在数据库中没有的任何城市,我都必须依赖地理编码API。

我不确定这是否有共同的做法。我不需要用户的具体位置,但只需要他们正在搜索的城市。

2 个答案:

答案 0 :(得分:0)

只要您在城市名称上编制索引,表的大小就没问题了。

索引数据库查询的性能远远超过了Web API访问。

另一点是,您可以更好地控制找到的数据。例如,如果您找到多个匹配的城市,则可以选择您的数据库条目,而Google有时会报告任何或一些随机(或至少是意外)搜索结果。

这就是为什么我必须在我的一个项目中更改为数​​据库搜索的第一个策略:Google somtimes没有找到我的客户地址但是总体上不同(即与预期的更大的同名的小村庄)

答案 1 :(得分:0)

为什么不两者兼顾?

将数据库中地址的地理编码信息作为“地址缓存”,然后仅在数据库中尚不存在该地址时才调用Google Maps Geocode API。这就是我在谷歌地图中用于SugarCRM集成的方法。它运作良好。顺便说一句,Google Maps Geocode API速度非常快,因此用户很少注意到。然而,根据请求有2,500 /天的限制,它也被限制为每秒约10个请求。因此,考虑到这些限制,我认为从长远来看,组合数据库/地理编码方法要好得多。

https://github.com/jjwdesign/JJWDesign-Google-Maps