1

Ruby Geocoderをインストールしたばかりで、 をトラバースしようとしていますがGeocoder::Result、不足し続けています。私はレールコンソールにいて、以下を使用しました:

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?? しかし、これらのどれも機能しません。どんなアイデアでも素晴らしいでしょう。

ありがとう!

4

3 に答える 3

3

私はそれを考え出した。ドキュメントには、「Geocoder.search は Geocoder::Result オブジェクトの配列を返す」と書かれています

したがって、私はこれが必要でした:

s[0].city<= ビバリーヒルズ OR s.first.city(@fotanus に感謝)

于 2013-09-07T02:23:21.427 に答える
1

docsによると、これは構造体であるため、次のようにインデックス付きシンボルとして値にアクセスする必要があります。

result[:city]

リンクには、このオブジェクトからアクセスできるものがあります。

于 2013-09-07T02:12:23.707 に答える
0

「Geocoder.search」を使用する場合、都市に到達するためにいくつかのレイヤーを解析する必要があります。以下は「ビバリーヒルズ」を返します。

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

他の回答に見られるように構文を使用する場合は、Geocoder.search を使用する代わりに、ジオコーダーの新しいインスタンスを作成する必要があります。

于 2013-09-19T22:15:34.087 に答える