2011年5月24日火曜日

位置情報とかGeocoderとかLocationManagerとか

LocationManager はエミュレータの API レベルが8以上だと使えませんでした。
APIレベル7なら大丈夫みたい。
8以上だとエミュレータが落ちるし・・・。(ウチだけか?)たのむぜgoogle先生(#^ω^)

GeocoderクラスをつかってLocaleから住所を取得。↓
Geocoder geocoder = new Geocoder(context, Locale.JAPAN);
List addressList =
geocoder.getFromLocation(locale.getLatitude(), locale.getLongitude(), 5);// 引数末尾は返す検索結果数(1~5推奨とか)

String resule;
for(Address address: addressList){
    String addressLine = address.getAddressLine(1);
    if(addressLine != null &&
        (result == null || result.rength() < addressLine.rength()))
    result = addressLine;
}
addressLineの2行目で一番長いのをもってくると。
1行目は国名が入っているのでそれ以外は場所によって通りの名前だったり住所だったりするみたいだが、大体住所が入ってる。ただ〇丁目までだったり〇丁目△ー□だったりするので一番長いのを使ってみる。もしかすると住所のほうが通りの名前より短い場合もあるかもしれないので、このまま使うのはまずい・・・かなー。
メモ


method

return
getCoundryName()国名
getAdminArea()都道府県
getSubAdminArea()よくわかりません
getLocality()市区町村
getSubLocality()これまた不明
getFeatureName()AddressLineの最後の方…
getPostalCode()郵便番号
getPremises()これも不明
getThoroughfare()意味としては通りとからしいが取得できず
getSubThoroughfare()〇丁目?

通りすがりの人教えてくれんかな |ω・`)
 googlemapでアドレスバーにスクリプト入れると座標がでる
javascript:void(prompt('',gApplication.getMap().getCenter()));
 
なんか、とにかく使い勝手わるくね?
あんまり日本向けになってないのかな。
なんで戻り値がAddressのリストで、引数にリストのインデックスの最大値って意図がわかりません。
中身も住所だったり地名、通りの名前だったり郵便番号だったり。
Addressクラスもしっくり来るメソッドないっぽいし・・・。

0 件のコメント:

コメントを投稿