2015-03-31 50 views
0

我想使用geocoder gem,但使用反向地理編碼時感到困惑。什麼是地理編碼對象和地理編碼器中的地理編碼::結果對象的數組gemoder gem

我有「地區」模型與字段國家,州,城市和郵編。

如果用戶只填寫郵編,那麼我想自動填寫所有其他字段。

reverse_geocoded_by :latitude, :longitude do |obj,results| 
    if geo = results.first 
    obj.city = geo.city 
    obj.zipcode = geo.postal_code 
    obj.country = geo.country_code 
    end 
end 
after_validation :reverse_geocode 

但無法理解obj和結果是什麼以及如何設置obj和結果。

請舉例來幫助我。

回答

1

我寫了一個blog解釋它是如何工作的。您需要進行地理編碼並從geocoder gem獲取相關信息。

用戶將使用Geocomplete輸入地址並將該地址存儲在用戶/位置表中的地址列中 然後,使用Geocoder獲取其他地理信息並使用地址更新其他列。

這裏去................

================用戶/地點表,在這裏我將使用允許用戶使用Geocomplete填寫地址,然後用它利用地理編碼

class CreateLocations < ActiveRecord::Migration 
    def change 
    create_table :places do |t| 
     t.string :address 
     t.float :latitude 
     t.float :longitude 
     ##======here the address field is important========== 
     t.string :address 
     t.string :country 
     t.string :state 
     t.string :city 
     t.string :pincode 
     t.timestamps 
    end 
    add_index :places, :address 
    end 
end 

得到其他細節================= =在用戶/位置模型中使用地址自動填充的地理編碼

##i want to use the address column to autopopulate others columns 
geocoded_by :address 
##also i want to use the latitude.longitude to fetch all others informations and then save in relevant ##feilds 
reverse_geocoded_by :latitude, :longitude do |obj,results| 
    if geo = results.first 
    obj.state = geo.state 
    obj.city = geo.city 
    obj.pincode = geo.postal_code 
    obj.country = geo.country 
    end 
end 

##變/更新/驗證地址只有地址變更爲其他性能改進每次##時間會不斷更新

after_validation :geocode, :reverse_geocode ,:if => :address_changed? 
+0

感謝,這正是我需要的 – Adt 2015-03-31 13:10:39