簡體   English   中英

Ruby Geocoder [Rails] - 如何遍歷此結果

[英]Ruby Geocoder [Rails] - How to Traverse this Result

我剛剛安裝了Ruby Geocoder ,我正試圖遍歷Geocoder::Result ,但是我一直在努力。 我在rails控制台中,並使用了以下內容:

s = Geocoder.search("90210")

返回以下內容:

[#<Geocoder::Result::Google:0x007ff295579ad8 @data={"address_components"=>[{"long_name"=>"90210", "short_name"=>"90210", "types"=>["postal_code"]}, {"long_name"=>"Beverly Hills", "short_name"=>"Beverly Hills", "types"=>["locality", "political"]}, {"long_name"=>"Los Angeles", "short_name"=>"Los Angeles", "types"=>["administrative_area_level_2", "political"]}, {"long_name"=>"California", "short_name"=>"CA", "types"=>["administrative_area_level_1", "political"]}, {"long_name"=>"United States", "short_name"=>"US", "types"=>["country", "political"]}], "formatted_address"=>"Beverly Hills, CA 90210, USA", "geometry"=>{"bounds"=>{"northeast"=>{"lat"=>34.1354771, "lng"=>-118.3867129}, "southwest"=>{"lat"=>34.065094, "lng"=>-118.4423781}}, "location"=>{"lat"=>34.1030032, "lng"=>-118.4104684}, "location_type"=>"APPROXIMATE", "viewport"=>{"northeast"=>{"lat"=>34.1354771, "lng"=>-118.3867129}, "southwest"=>{"lat"=>34.065094, "lng"=>-118.4423781}}}, "types"=>["postal_code"]}, @cache_hit=nil>]

如何訪問結果的特定部分? 我嘗試過以下方法:

s.result.cityresult.citys.data ?? 但這些都不起作用。 任何想法都會很棒。

謝謝!

我想到了。 文檔說“Geocoder.search返回一個Geocoder :: Result對象的數組”

因此,我需要這個:

s[0].city <= Beverly Hills OR s.first.city (感謝@fotanus)

根據文檔 ,它是一個結構,因此您應該將值作為索引符號訪問,如下所示:

result[:city]

該鏈接具有可從此對象訪問的內容。

使用“Geocoder.search”時,您需要解析幾個圖層才能到達城市。 以下將返回“比佛利山庄”。

s.first.data["address_components"][1]["short_name"]

如果要使用其他答案中所示的語法,則需要創建一個新的地理編碼器實例,而不是使用Geocoder .search

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM