GeoCoding
GeoCode: 일반 주소 -> 위도, 경도
Reverse geoCode: 위도, 경도 -> 일반 주소
- 사용가능 여부 확인 절차 필요, 실행 전에 Geocoder.isPresent()로 확인 가능
- 네트워크 작업이므로 별도의 Thread에서 처리해야 함
GeoCoder 사용
1) GeoCoder 객체 생성
GeoCoder geocoder = new GeoCoder(MainActivity.this, Locale.getDefault());
*Geocoder(Context context, Locale locale)
2) GeoCoding 실행
- GeoCoding
List<Address> address = geocoder.gerFromLocationName("애오개역", 2) //주소명과 결과 개수를 넘겨줌
- Reverse geocoding
List<Address> addresses = geocoder.getFromLocation(lat, long, 3); //위도, 경도, 결과 개수 넘겨줌
실행 결과 List<Address>가 넘어옴, 위 작업은 네트워크 작업이므로 비동기로 처리해야 함.
class GeoTask extends AsyncTask<Location, Void, List<Address>> {
//input으로 Location을 넘겨주고 결과로 List<Address>를 반환하는 AsyncTask로 비동기 처리 구현
Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());
@Override
protected List<Address> doInBackground(Location... locations) { //여기서 네트워크 작업
List<Address> addresses = null;
try {
addresses = geocoder.getFromLocation(locations[0].getLatitude(),
locations[0].getLongitude(), 1);
} catch (IOException e) {
e.printStackTrace();
}
return addresses;
}
@Override
protected void onPostExecute(List<Address> addresses) {
Address address = addresses.get(0);
//결과 처리
}
}
'프로그래밍 > Android' 카테고리의 다른 글
안드로이드 위치 기반 서비스(LBS) (0) | 2022.12.10 |
---|