0

我正在尝试使用 Graticule 对地址进行地理编码,但遇到了一个烦人的问题。在美国对地址进行地理编码时,该位置的区域属性是两个字母的缩写而不是全名(OH 而不是 Ohio)。有没有办法找回全名?

4

1 回答 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 回答