Ruby on rails 访问地理编码器结果

Ruby on rails 访问地理编码器结果,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在试用geocoder gem,并希望访问视口结果 作为Ruby新手,有更好的方法访问结果 result = Geocoder.search("New York, NY").map(&:geometry) north_east_lat = result[0]["viewport"]["northeast"]["lat"] north_east_lng = result[0]["viewport"]["northeast"]["lng"] 虽然这确实有效,但它看起来又丑又脆 有什么建

我正在试用geocoder gem,并希望访问视口结果

作为Ruby新手,有更好的方法访问结果

result = Geocoder.search("New York, NY").map(&:geometry)
north_east_lat = result[0]["viewport"]["northeast"]["lat"]
north_east_lng = result[0]["viewport"]["northeast"]["lng"]
虽然这确实有效,但它看起来又丑又脆

有什么建议可以让这更好吗?

看起来不像。仅在Google Maps API结果上定义,因为它是一个非常特定于Google的字段:它不仅包含坐标(geocoder已经提取了坐标),还包含
位置类型
视口
、和
边界
,这不属于地理编码器的标准用例:
location\u type
与结果的精度有关,
viewport
专门介绍谷歌如何“建议”我们在可视地图上显示此结果,
bounds
是整个城市/州/任何地方的边界框。虽然每一个都与一个非常特殊的用例相关,但大多数使用geocoder的人并不需要它们,因此开发人员不承担任何责任,而是直接公开字段。因此,如果您想要一种干净的方式来访问这些字段,您必须自己构建它


如果您经常使用viewport功能,可能值得创建自己的
viewport
类来表示此数据,然后手动包装表达式(如
viewport.from_geometry(result.geometry)
),或者将自己的
viewport
方法修补到
Geocoder::result::Google
。您的呼叫。

据我所知,
几何体
数据只是一个简单的
散列
。如果您不喜欢在多个级别上通过[“key”]访问值的方式,可以将哈希转换为OpenStruct

需要“ostruct”
结果=Geocoder.search(“纽约州纽约市”)。首先
#独生子女班http://www.devalot.com/articles/2008/09/ruby-singleton
上课时间.now,:title=>“生日派对”}
load_data=hash.each_pair.injection({})do | all,(key,value)|
value=ostructly\u deep(value)如果value.is\u a?(散列)
所有[key.to_sym]=值#键都需要是符号才能加载
全部的
结束
root.marshal\u加载\u数据
根
结束
结束
现在,您可以从\u成员\u几何体=result.ostructic\u几何体调用\u值
现在,您可以从成员调用值

您可以使用Geocoder::Result方法访问该数据,例如:

结果[0]。城市 结果[0]。纬度

查看结果为[0]的所有方法