안드로이드에서 위경도로 주소명을 받을 때 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일 경우 모든 위경도에 대해 대응되는 주소를 얻을 수 있는 것은 아니다.
앞으로 주소를 얻으려고 할 때 주의해야할 것 같다.
'Android > 기타' 카테고리의 다른 글
[Android] 멀티스레드에 대한 개인적인 생각 (0) | 2021.07.27 |
---|---|
[Android] 로그에 대한 개인적인 생각 (0) | 2021.06.23 |
[Android] Retrofit2 응답 대응 처리 (0) | 2020.12.21 |
[Android] Retrofit2 Converter를 커스텀 해보기 (0) | 2020.10.05 |
[Android] New Google Play Console 리뷰 (0) | 2020.07.07 |