经纬网地理编码问题

时间:2011-01-11 20:37:21

标签: ruby-on-rails ruby rubygems geocoding reverse-geocoding

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

1 个答案:

答案 0 :(得分:0)

Looks like 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方法(或类似方法),因为当前'region'具有可变含义/结果并发送拉请求...