2013-05-26 98 views
0

我開始了一個新的與Google地圖緊密集成的rails項目。當用戶搜索城市時,我正在嘗試決定是否使用Google的Geocoding API對地址進行地理編碼,或者在預先填充緯度/長度的數據庫中查找城市。經過我/緯度後,我會將其繪製在Google地圖上。隨時隨地進行地理編碼和數據庫查找

你認爲哪種表現會更好?在數據庫查詢中,表格必須非常大才能考慮所有我需要的城市,無論如何,對於任何我沒有在我的數據庫中使用的城市,我都必須使用地理編碼API。

我不確定這是否有普遍的做法。我不需要用戶的具體位置,但他們只是一個他們正在尋找的城市。

回答

0

表格的大小沒有問題,只要你在城市名稱上索引。

到目前爲止,索引數據庫查詢的性能超過了Web API訪問。

還有一點是,您可以更好地控制找到的數據。例如,如果您找到多個匹配的城市,則可以選擇您的數據庫條目,而Google有時會報告沒有或一些隨機(或至少意外)的搜索結果。

這就是爲什麼我必須在我的一個項目中更改爲數​​據庫搜索第一策略:Google somtimes沒有找到我的客戶地址,但有一些完全不同的地方(即與預期的大村莊同名的小村莊)

0

爲什麼不這樣做呢?

將數據庫中地址的地理編碼信息設置爲「地址緩存」,然後只有在數據庫中不存在該地址時才調用Google地圖地理編碼API。這是我在Google Maps to SugarCRM集成中使用的方法。它運作良好。順便說一句,谷歌地圖地理編碼API速度非常快,所以用戶很少會注意到。然而,要求每秒限制2500個,並且每秒約10個請求也被限制。因此,考慮到這些限制,我認爲從長遠來看,組合數據庫/地理編碼方法會更好。

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