개발관련일지

안드로이드 위도경도를 이용해 구글 Geocoder로 국내주소 구하기 본문

개발기록/안드로이드

안드로이드 위도경도를 이용해 구글 Geocoder로 국내주소 구하기

BEECHANGBOT 2021. 1. 10. 05:45

위도경도를 지오코더로 이용해서 시 , 구 , 동 만 주소만 가져올려고 했었다.

 

예제는 아래와 같은 코드를 긁어서 사용했다. 

public String getAddress(Context mContext, double lat, double lng) 
{
    String nowAddr ="현재 위치를 확인 할 수 없습니다.";
    Geocoder geocoder = new Geocoder(mContext, Locale.KOREA);
    List<Address> address;
    
    try 
    {
        if (geocoder != null) 
        {
            address = geocoder.getFromLocation(lat, lng, 1);
            if (address != null && address.size() > 0) 
            {
                nowAddr = address.get(0).getAddressLine(0).toString();
            }
        }
    } 
    catch (IOException e) 
    {
        Toast.makeText(mContext, "주소를 가져 올 수 없습니다.", Toast.LENGTH_LONG).show();
        e.printStackTrace();
    }
    return nowAddr;
}

함수 사용해서 리턴되는 스트링을 사용하면 된다. 

        String seoul = getAddress(this, 37.567111598236, 126.97792364277292);
// 대한민국 서울특별시 중구 명동 세종대로 124

주석과 같은 결과가 나온다 여기서 원하는값을 대한민국 / 서울특별시 / 중구 / 명동 / 세종대로 / 124 처럼 스플릿해서 사용할려했다. 여기서 생각하지 못한 부분이 있었다. 

행정구역별로 주소가 다르게 나온다. 

위키백과 - 대한민국 주소

서울은 저렇게 스플릿하면 간단하게 사용 할 수 있겠지만 경기도라면? 충청도라면? 다르게 값이 나올 것이다. 주요 시 , 군의 위치를 구글지도에서 위도경도를 이용해 출력해보았다. 

 

대한민국 부산광역시 연제구 연산동 중앙대로 1001

대한민국 대전광역시 서구 둔산동 둔산로 100

 

대한민국 제주특별자치도 제주시 이도1동 1250-15

대한민국 충청북도 청주시 상당구 북문로3가 89번지

대한민국 경기도 구리시 교문동 736-2

 

광역시와 도부터 다르게 나오므로 스플릿으로 구할 수 없다는 걸 알 수 있다. 유저가 어디있는지도 사실 모르니..

그래서 List<Address> address 의 Address클래스를 디벨로퍼 가서 확인하였다. 

 

주소를 반환해주는 메소드들이 있으며 이 메소드들은 주소를 반환해주던가 null을 반환한다.

getAdminArea - 시 , 도

getLocality , getSubLocality - 구

getThoroughfare - 동

getSubThoroughfare - 번지

getFeatureName - 세부주소

getPostalCode - 우편번호 

 

미국기준으로 되어있어서 전부다 로그를 찍어보았다. 시 , 도 에 따라서 데이터가 달랐다. 

광주광역시 , 충정북도

 

광역시의 경우 getAdminArea에 시가 들어가고

도의 경우 getAdminArea에 도이름이 들어가고 getLocality에 시가 들어간다. 광역시는 getLocality가 널이다.

시를 구하는 경우는 getAdminArea , getLocality를 이용해서 조건처리가 필요하다.

 

그리고 정말 정확한 주소가 필요하다면 구글로 한번구하고 국내 네이버나 카카오 api이용해서 제대로된 주소를 가져와야 할 것 같다.(세종시가 안나온다..)

지하철 와이파이를 이용하는 경우도 다르게 나온다. (지하철7호선 고속터미널역)이런식으로 나왔던걸로 기억한다. 나중에 제대로 확인해봐야지... 

 

참고한 사이트:

developer.android.com/reference/android/location/Address

 

Address  |  Android 개발자  |  Android Developers

 

developer.android.com

andro-jinu.tistory.com/entry/android1

 

[안드로이드] 위경도로 주소찾기 Geocoder

네이버클라우드 플랫폼의 MAP을 사용하는데 간혹가다 위경도 좌표로 주소를 찾을 필요가 생깁니다. 그럴때 구글의 Goecoder함수를 사용하여 간단하게 만든 함수입니다. 주소를 검색하기 위하여 Geo

andro-jinu.tistory.com