0

Graticuleを使用して住所をジオコーディングしようとしていますが、厄介な問題が発生しています。米国の住所をジオコーディングする場合、その場所の地域属性は、フルネームではなく2文字の略語です(オハイオではなくOH)。フルネームを取得する方法はありますか?

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メソッド(または同様のもの)を追加できます。これは、現在の「region」の意味/結果が可変であり、プルリクエストを送信するためです...

于 2011-01-11T22:00:55.300 に答える