這個網址有一個演示http://gmaps4rails.heroku.com/locationsRails3中如何從細節地址特定城市在谷歌地圖
當我們給一個詳細的地址,如「9街杜米雷,馬賽」 所以在谷歌地圖就會顯示一個點,
現在我想通過地址獲得特定城市「馬賽」不包含街道,僅城市名稱,
是有一些方法來實現這一點?
這個網址有一個演示http://gmaps4rails.heroku.com/locationsRails3中如何從細節地址特定城市在谷歌地圖
當我們給一個詳細的地址,如「9街杜米雷,馬賽」 所以在谷歌地圖就會顯示一個點,
現在我想通過地址獲得特定城市「馬賽」不包含街道,僅城市名稱,
是有一些方法來實現這一點?
這是因爲這樣做非常簡單:
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 馬賽,法國
我想,如果我沒有理解問題,這可能是你正在尋找 與已知的地址給定的模型正確的解決方案,自動獲取地址部件和存儲在單獨的屬性:
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