逆ジオコーディングをやってみましょう。

逆ジオコーディングというのは、緯度・経度から住所を取得することです。

Androidでhttpリクエストを発行する場合、注意が必要です。

普通に、Google Geocoding API に書かれているフォーマットでやると、ほぼ英語で一部日本語という面妖な結果が返ってきます。

例えば、下のフォームは東京タワーの住所を取得するものです。

Google Geocoding APIでは結果はJSONとXMLの2種類選べますが、推奨はJSONなのでこういうコードになります。

http://maps.googleapis.com/maps/api/geocode/json?latlng=35.6586308,139.7454106&sensor=true

これをPCなどで実行すると正しく日本語の結果が返ってきますが、Androidからリクエストするとこんな結果が返ってきます。

Japan, Tokyo, Minato, Shibakoen, 4丁目2-8

コードはこういう風にします。

http://maps.googleapis.com/maps/api/geocode/json?latlng=35.6586308,139.7454106&sensor=true&language=ja

これで日本語が表示できます。

日本, 東京都港区芝公園4丁目2-8

reverse_geocode()で使われる緯度・経度の取得などは、以下のページ参照
Google Maps Android API V2で現在地の緯度・経度・標高を表示



追加
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import java.io.ByteArrayOutputStream;
//xmlの場合
import org.xmlpull.v1.XmlPullParser;
import android.util.Xml;
import java.io.StringReader;
//jsonの場合
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;



位置が変わる都度、結果を再取得する場合、

public void onLocationChanged(Location location)に以下を記述

//現在位置の緯度を取得
latitude = location.getLatitude();
//現在位置の経度を取得
longitude = location.getLongitude();
//逆ジオコード
reverse_geocode(latitude,longitude);



    
private void reverse_geocode(double lat,double lon){
        
    HttpClient httpClient = new DefaultHttpClient();
    String uri = "http://maps.googleapis.com/maps/api/geocode/json" +
        "?latlng=" + lat + "," + lon + "&sensor=true&language=ja";
    HttpGet request = new HttpGet(uri.toString());


    try {
        httpResponse = httpClient.execute(request);
    } catch (Exception e) {
        Log.d("HttpSampleActivity", "Execute エラー");
    }

    int status = httpResponse.getStatusLine().getStatusCode();
     
    if (HttpStatus.SC_OK == status) {
        try {
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            httpResponse.getEntity().writeTo(outputStream);
            json_parse(outputStream.toString());
        } catch (Exception e) {
            Log.d("HttpSampleActivity", "エラー");
        }
    } else {
        Log.d("HttpSampleActivity", "Status" + status);
    }
}
    
private void json_parse(String str) {
        try {
            String res = "";
            JSONObject rootObject = new JSONObject(str);
            JSONArray eventArray = rootObject.getJSONArray("results");
            for (int i = 0; i < eventArray.length(); i++) {
                JSONObject jsonObject = eventArray.getJSONObject(i);
                res = jsonObject.getString("formatted_address");
                if (!res.equals("")){
                    Log.d("Address",res);
                    TextView textview = (TextView) findViewById(R.id.textview1);
                        textview.setText(res);
                    break;
                }

            }
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
}


こんな感じ。