2015-01-07 125 views
3

我已搜查高和低解決這個沒有運氣,所以我現在在這裏發帖...地理編碼多個地址

我用我的回報率的應用地理編碼寶石。

這是方法上的文檔的同一型號的地理編碼多個地址,這是行不通的,因爲它只能進行地理編碼的最後一個方法:

geocoded_by :start_address, latitude: :start_latitude, longitude: :start_longitude 
geocoded_by :end_address, latitude: :end_latitude, longitude: :end_longitude 

我試圖寫一個自定義的方法來解決這樣的:

geocoded_by :geocode_user_addresses 
after_validation :geocode 

def geocode_user_addresses 
home_address_joined = [home_address, city].compact.join(', ') 
work_address_joined = [work_address, city].compact.join(', ') 
home_coordinates = Geocoder.search(home_address_joined) 
work_coordinates = Geocoder.search(work_address_joined) 
self.home_latitude = home_coordinates.latitude 
self.home_longitude = home_coordinates.longitude 
self.work_latitude = work_coordinates.latitude 
self.work_longitude = work_coordinates.longitude 
end 

這給了我這個錯誤,當我嘗試地理編碼地址:

undefined method `latitude' 

關於從哪裏開始的任何想法?還有一個類似的問題,但沒有解決方案被共享:Rails geocoder gem issues

+0

結帳在[https://stackoverflow.com/questions/29655702/geocoding-multiple-addresses提出的解決方案 - 在一個模型](https://stackoverflow.com/questions/29655702/geocoding-multiple-addresses-in-one-model)它的作品像魔術 –

回答

2

Geocoder.search返回一個位置數據數組。

在提供,你可以檢索經度和緯度與樣本:

self.home_latitude = home_coordinates[0].geometry["location"]["lat"] self.home_longitude = home_coordinates[0].geometry["location"]["lng"]