我刚刚安装了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.city
,result.city
,s.data
??但这些都不起作用。任何想法都会很棒。
谢谢!
答案 0 :(得分:3)
我明白了。文档说“Geocoder.search返回一个Geocoder :: Result对象数组”
因此,我需要这个:
s[0].city
&lt; =比佛利山庄或
s.first.city
(感谢@fotanus)
答案 1 :(得分:1)
答案 2 :(得分:0)
使用“Geocoder.search”时,您需要解析几个图层才能到达城市。以下将返回“Beverly Hills”。
s.first.data["address_components"][1]["short_name"]
如果您想使用其他答案中的语法,则需要创建一个新的地理编码器实例,而不是使用Geocoder.search