2011-08-17 54 views

回答

2

這是因爲這樣做非常簡單:

acts_as_gmappable :callback => :save_country 

    def save_country(data) 
    #what you need to do here 
    end 

data將包含來自谷歌的完整的哈希值。在你的榜樣,它看起來像:

address_components:

  • LONG_NAME: 「9」 類型:
    • street_number SHORT_NAME: 「9」
  • LONG_NAME:街杜米雷類型:
    • route name:Rue du Muret
  • LONG_NAME:萊斯Amavaux類型:
    • 附近
    • 政治SHORT_NAME:萊斯Amavaux
  • LONG_NAME:14E郡類型:
    • sublocality
    • 政治SHORT_NAME:14E郡
  • LONG_NAME:馬賽類型:
    • 地方
    • 政治SHORT_NAME:馬賽
  • LONG_NAME:羅訥河口省類型:
    • administrative_area_level_2
    • 政治SHORT_NAME: 「13」
  • long_name:「Provence-Alpes-C \ xC3 \ xB4te d'Azur」types:
    • administrative_area_level_1
    • 政治SHORT_NAME:PACA
  • LONG_NAME:法國類型:
    • 國家
    • 政治SHORT_NAME:FR
  • LONG_NAME: 「13014」 類型:
    • POSTAL_CODE SHORT_NAME: 「13014」 類型:
  • STREET_ADDRESS幾何:位置: LNG:5.3805084 緯度:43.3315919範圍: 東北: LNG:5.3805246 緯度:43.3315919 西南: LNG:5.3805084 LAT :43.331585 LOCATION_TYPE:RANGE_INTERPOLATED視: 東北: LNG:5.3818654802915 緯度:43.3329374302915 西南: LNG:5.3791675197085 緯度:43。3302394697085周的formatted_address:9街杜米雷,13014 馬賽,法國
2

我想,如果我沒有理解問題,這可能是你正在尋找 與已知的地址給定的模型正確的解決方案,自動獲取地址部件和存儲在單獨的屬性:

geocoded_by :address 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 :geocode 

每個地址解析器::結果對象,因此,提供以下數據:

result.latitude - float 
result.longitude - float 
result.coordinates - array of the above two 
result.address - string 
result.city - string 
result.state - string 
result.state_code - string 
result.postal_code - string 
result.country - string 
result.country_code - string 

如果您熟悉您使用的地理編碼服務返回的結果,則可以訪問更多數據,但您需要熟悉所使用的特定Geocoder :: Result對象以及結構您的地理編碼服務的迴應。

Thx

相關問題