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