0

I'm starting a new rails project that integrates closely with Google Maps. When a user searches for a city, I'm trying to decide whether to geocode the address on the fly (using Google's Geocoding API) or to look up the city in a database pre-populated with lat/long. After I have the lat/long I will plot it on Google Maps.

Which do you think would perform better? With the database lookup, the table would have to be pretty large to account for all the cities I would need and I would have to fallback on the geocoding API anyway for any cities that I don't have in my database.

I wasn't sure if there is a common practice to this or not. I don't need a user's specific location, but just a city they are searching for.

4

2 回答 2

0

表的大小是没有问题的,只要你索引上的城市名。

到目前为止,索引数据库查询的性能超过了 Web API 访问。

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

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

于 2013-05-26T11:50:40.360 回答
0

为什么不两者都做?

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

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

于 2013-11-10T14:57:54.727 回答