본문 바로가기

Android/기타

[Android] Android Geocoder maxResults 값에 대해서

반응형

안드로이드에서 위경도로 주소명을 받을 때 Geocoder 객체의 getFromLocation API를 사용한다.

그런데 getFromLocation에서 결과값 리스트가 비어서 오는 경우가 있었다.

파라미터는 위도, 경도, 그리고 문제의 maxResults 세 개였고 maxResults 이름만 보고 결과값을 최대 몇 개까지 받을 것인지에 대한 파라미터로 추측했었다.

API 문서에서도 보면 딱히 자세한 설명도 없고 예제 샘플이나 다른 사람들이 한 것을 보더라도 maxResults 값을 1로 하고 있었기에 추측하고 있는 것이 맞는구나라고 생각했던 것 같다.

 

봤던 API 문서의 경로는 다음과 같다. developer.android.com/reference/android/location/Geocoder

 

Geocoder  |  Android 개발자  |  Android Developers

 

developer.android.com

실제 참고했던 내용 부분 캡쳐

그런데 위와 같은 방식으로 처리를 하니 위경도는 정상적으로 받아오는데 주소값을 못 불러오는 경우가 생기는 경우가 많아졌다. 그래서 이에 대해 다시 검증해보기로 했다.

 

위경도를 받아오고 있는 상황에서 주소값을 못 불러오는 경우를 재현한 후에 maxResults값만 1~4까지 테스트를 해보았다.

maxResults 주소 개수 실제 위경도 차이
1 0  
2 1 1번째 : 원래 위경도와 살짝 차이가 있음
3 2 1번째 : maxResults가 2일 때 1번째 주소와 동일
2번째 : 1번째보다 좀 더 차이가 있음
4 3 1번째 : maxResults가 2일 때 1번째 주소와 동일
2번째 : maxResults가 3일 때 2번째 주소와 동일
3번째 : 2번째보다 좀 더 차이가 큼 

테스트를 하고 난 후의 자체적으로 생각한 결론이다.

 

1. maxResults가 진짜 리턴하는 주소의 최대 개수라면 원래 위경도에 해당되는 주소 이름이 없기 때문에 현재 주소 개수가 maxResults값에서 1을 뺀 만큼만 나온다고 생각할 수 있다.

2. maxResults값은 정확도와 관련이 있다.

3. 그리고 결과값은 제일 가까운 위치 순서대로 나온다.

4. Geocoder를 이용 시 maxResults가 1일 경우 모든 위경도에 대해 대응되는 주소를 얻을 수 있는 것은 아니다.

 

앞으로 주소를 얻으려고 할 때 주의해야할 것 같다.

반응형