我正在尝试使用 Graticule 对地址进行地理编码,但遇到了一个烦人的问题。在美国对地址进行地理编码时,该位置的区域属性是两个字母的缩写而不是全名(OH 而不是 Ohio)。有没有办法找回全名?
问问题
203 次
1 回答
0
看起来 Graticule只是通过各种服务的原始结果,只对属性名称进行规范化。所以简短的回答是:只有通过使用当前在字段 Graticule 中返回全名的服务才能映射到该服务的区域。
长答案(或真正的建议)。
我会使用哈希替换值,例如,
US_STATES = {
'OH' => 'Ohio'
[...]
}
my_loc.region = US_STATES[my_loc.region] || my_loc.region
可能希望将其包装在国家/地区的支票中,但是您必须确保涵盖服务中所有可能的国家/地区值,例如,
if my_loc.country =~ /\A\s*(US|U\.?S\.?A)\s*\z/i
这将使您获得一些稳定性,因此更改服务或更改其结果的服务以后不会让您感到惊讶。
如果您感到无畏,可以分叉 Graticule 并添加 region_name 和 region_abbr 方法(或类似方法),因为当前的“区域”具有可变的含义/结果并发送拉取请求......
于 2011-01-11T22:00:55.300 回答