Geocoder를 이용한 주소 및 위도/경도 변환 예제

|

안드로이드에서는 위도/경도를 이용해서 주소값을 획득하거나 반대로 주소값을 이용해서 위도/경도를 획득할 수 있는 Geocoder라는 클래스를 제공하고 있습니다.

에제 코드는 다음과 같습니다.

먼저 인터넷이 되어야 하기 때문에 AndroidManifest.xml에 다음 권한을 추가합니다.

Permission 추가

  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.INTERNET" />


GeocodeUtil.java

package snowdeer.utils;

import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import java.util.ArrayList;
import java.util.List;

public class GeocodeUtil {
  final Geocoder geocoder;

  public static class GeoLocation {

    double latitude;
    double longitude;

    public GeoLocation(double latitude, double longitude) {
      this.latitude = latitude;
      this.longitude = longitude;
    }
  }

  public GeocodeUtil(Context context) {
    geocoder = new Geocoder(context);
  }

  public ArrayList<GeoLocation> getGeoLocationListUsingAddress(String address) {
    ArrayList<GeoLocation> resultList = new ArrayList<>();


    try {
      List<Address> list = geocoder.getFromLocationName(address, 10);

      for (Address addr : list) {
        resultList.add(new GeoLocation(addr.getLatitude(), addr.getLongitude());
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    return resultList;
  }

  public ArrayList<String> getAddressListUsingGeolocation(GeoLocation location) {
    ArrayList<String> resultList = new ArrayList<>();

    try {
      List<Address> list = geocoder.getFromLocation(location.latitude, location.longitude, 10);

      for (Address addr : list) {
        resultList.add(addr.toString());
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    return resultList;
  }
}