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



我正在启动一个与Google Maps紧密集成的新rails项目。当用户搜索一个城市时,我试图决定是否在飞行中对地址进行地理编码(使用Google的地理编码API),或者在预先填充有lat/long的数据库中查找该城市。当我得到时间/长度后,我会把它绘制在谷歌地图上。

你认为哪个表现更好?使用数据库查找时,表必须非常大才能包含我需要的所有城市,而且对于数据库中没有的任何城市,我都必须使用地理编码API。

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

表的大小没有问题,只要按城市名称索引即可。

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

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

这就是为什么我不得不在我的一个项目中更改为DB搜索优先策略:谷歌有时找不到我的客户地址,而是完全不同的东西(即小村庄的名称与预期的大村庄相同)

为什么不两者都做呢?

有地址的地理编码信息在你的数据库作为"地址缓存",然后调用谷歌地图地理编码API只有当地址不存在于你的数据库。这就是我在Google Maps与SugarCRM集成中使用的方法。效果很好。顺便说一句,Google Maps Geocode API非常快,所以用户很少注意到。然而,请求限制为每天2500个,并且也被限制为每秒10个请求。因此,考虑到这些限制,我认为从长远来看,数据库/地理编码的组合方法要好得多。

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

最新更新