Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何通过geocoder gem获得完整的街道地址?_Ruby_Google Maps_Google Maps Api 3_Google Geocoder_Street Address - Fatal编程技术网

Ruby 如何通过geocoder gem获得完整的街道地址?

Ruby 如何通过geocoder gem获得完整的街道地址?,ruby,google-maps,google-maps-api-3,google-geocoder,street-address,Ruby,Google Maps,Google Maps Api 3,Google Geocoder,Street Address,我正在使用谷歌的geocoder来验证地址,并在地址被略微屏蔽时返回正确的值,以及获取纬度和经度。我想我在这里的实现可能有点不对劲,因为它感觉太笨重了,而且我发现一些地址缺少街道号码 我从以下代码开始: result = Geocoder.search(full_address_to_verify) if result != [] street_address = result[0].address_components[1]["long_name"] city = result[0].

我正在使用谷歌的
geocoder
来验证地址,并在地址被略微屏蔽时返回正确的值,以及获取纬度和经度。我想我在这里的实现可能有点不对劲,因为它感觉太笨重了,而且我发现一些地址缺少街道号码

我从以下代码开始:

result = Geocoder.search(full_address_to_verify)
if result != []
  street_address = result[0].address_components[1]["long_name"]
  city = result[0].address_components[2]["long_name"]
  state = result[0].address_components[5]["long_name"]
  zip = result[0].address_components[7]["long_name"]
end  
我发现有时候我会得到多个结果,所以我会选择第一个(上面的
[0]
)。此外,我还发现了一些奇怪之处,大多数时候
result[0]。address\u components[1]
包含完整地址,包括街道号,但偶尔不包含,我必须添加
result[0]。address\u components[0]
。我还没有找到一个押韵或理由

最终,我的目标是将USA street number+street、city、state和zip code字段检索到单独的变量中

所以我的问题是,有没有更好的方法来检索地址,以便街道号码始终与路线正确关联


从文档中,我并没有看到任何干净的方法,它们只是简单地给我所需的地址字段,而不从请求-答复的各个字段中提取数据…

对,
address\u组件
应该使您能够完成您想要完成的任务。有关
押韵
,您可以参考

Google Maps API通过在此位置放置字符串来标记此字段属于哪种组件:

result[0].address_components[i].types[0]
您应该根据类型获得相应的值,而不是
地址\u组件的位置

这是谷歌在其网站上的做法:

var组件形式={
街道编号:“短名称”,
路线:'long_name',
地点:'long_name',
行政区域级别1:“短名称”,
国家:'long_name',
邮政编码:“短名称”
};
...
...
//从place details中获取地址的每个组件
//并在表单上填写相应的字段。
对于(变量i=0;i
没错,
地址\u组件应能让您完成想要完成的任务。有关
押韵
,您可以参考

Google Maps API通过在此位置放置字符串来标记此字段属于哪种组件:

result[0].address_components[i].types[0]
您应该根据类型获得相应的值,而不是
地址\u组件的位置

这是谷歌在其网站上的做法:

var组件形式={
街道编号:“短名称”,
路线:'long_name',
地点:'long_name',
行政区域级别1:“短名称”,
国家:'long_name',
邮政编码:“短名称”
};
...
...
//从place details中获取地址的每个组件
//并在表单上填写相应的字段。
对于(变量i=0;i
晚会晚了几年。从google地理编码API中提取地址非常简单,而且使用嵌套的地址组件相当麻烦


幸运的是,geocoder gem具有访问地址信息的内置方法。请阅读更多关于。

晚会晚了几年。从google地理编码API中提取地址非常简单,而且使用嵌套的地址组件相当麻烦

幸运的是,geocoder gem具有访问地址信息的内置方法。请阅读更多关于