Geocoder를 이용한 주소 및 위도/경도 변환 예제
09 Aug 2017 | Android Location안드로이드에서는 위도/경도를 이용해서 주소값을 획득하거나 반대로 주소값을 이용해서 위도/경도를 획득할 수 있는 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;
}
}