2011年9月27日火曜日

[Android]EditTextに入力中の文字列を、リアルタイムでどんどんジオコーディングしてみる2

さて、前回に引き続き、ジオコーディングのお話です。

今回は「文字列から位置情報を取得する」部分です。
この部分、すでに該当する機能がクラスとしてしっかり定義されてあるので、それを使うだけでお手軽にできちゃいます。さすがAndroid。googleサービスとの親和性はそれなりに高い。
さて、この「文字列から位置情報を取得する」機能はタイトルにもなっている通り「ジオコーディング」と呼ばれます。そして、これを提供するクラスがまんまの名前であります。その名もGeocoder
コードは前回のコードの一部抜粋でしかないです。
まずはGeocoderオブジェクトを作成します。context(thisでも良いんだが、元ソースではHandlerの中なので)の他に、ロケールをぶっ込みます。ようはどこかって話で、ここはJAPANなのでおとなしくJAPANをぶち込みます。
次にAddressのリストを準備して、geocoderのgetFromLocationNameメソッドを実行します。名前の通り「名前からロケーションをgetする」メソッドです。引数一つ目にStringを、二つ目には「いくつ位置情報を取得するか」を指定します。これは、表記が曖昧だとかで、渡されたStringから複数の位置情報が導かれる可能性があるからです。今回は地図に表示するのに二カ所以上の位置情報が来てもしかたないので、1を指定しています。間違った位置情報が取れた?そんなもんあいまいな入力した奴が悪い(マテ
あとは通常運行ですね。addressから一番目の要素を取り出して、その中の緯度経度を読み取っています。お手軽です。文字列から位置情報を取得するって部分だけでいえば二行で終わってます。
ああ、Geocoder関連はExceptionを投げる事があるのでtrycatchで囲んであげてください。

非常に簡単でしたが、これだけなんです。マジgoogle先生GJだわ。
それでは次が最後、「位置情報を指定してそこを中心にMapViewを表示する」です。気が向いたら書く(ぉ
追記 10/4 書きました。
[Android]EditTextに入力中の文字列を、リアルタイムでどんどんジオコーディングしてみる3

0 件のコメント:

コメントを投稿