Androidで位置情報から地名を取得する方法

2019年5月16日

本稿では、GoogleAPIを使用して位置情報から地名を取得する方法を説明します。

 

Javaコード内に地名を取得するAPIを実装

 

import java.io.IOException;
import java.util.List;
import java.util.Locale;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
public class ReverseGeocode {
public String getPlaceName(Context context, double latitude, double longitude) throws IOException {
    String string = new String();
    Geocoder geocoder = new Geocoder(context, Locale.US);
    List<
    list_address = geocoder.getFromLocation(latitude, longitude, 2); 
    if(!list_address.isEmpty()) {
        string = list_address.get(0).getLocality();    //市区町村取得
        string = list_address.get(0).getAdminArea();   //都市名取得
        string = list_address.get(0).getCountryName(); //国名取得 
    } else { 
        string = "現在地が特定できませんでした。"; 
    } 
    return string;
}
 

他Activityから位置情報を渡す処理を実装

public void onResume() {
    super.onResume();
    mString = new String();
    ReverseGeocode rg = new ReverseGeocode();
try {
//ローマの座標を渡す
mString = rg.getPlaceName(this,41.8787,12.4925);
} catch (IOException e) {
e.printStackTrace();
}
Toast.makeText(this, mString, Toast.LENGTH_LONG).show();
}

これで、Main画面起動時にトースト表示で”Rome”と表示されます。

 

今回は位置情報を静的に渡しているのでonResumeに記述していますが、 動的に値を渡す(GPSなどを使用する)のであれば、

onLocationChangedでgetPlaceNameをcallする処理を記載してください。