본문 바로가기
  • 개발 삽질 블로그
프로그래밍/Android

안드로이드 GeoCoding 사용

by 갹둥 2022. 12. 10.

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