일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- databinding xml
- @immutable
- @stable
- effect api
- compose side-effect
- android mvi
- 레트로핏
- rememberCoroutineScope
- LaunchedEffect
- 안드로이드 다이얼로그 오류
- [databinding]
- Android
- Python
- Java
- onIntercepterTouchEvent
- WindowManager$BadTokenException
- {"msg":"cannot find method
- android compose
- 터치이벤트 순서
- android.view.WindowManager.BadTokenException
- dispatchTouchEvent
- android compose stable
- 힐트
- 안드로이드
- material3
- LaunchedEffect vs rememberCoroutineScope
- databinding error
- isFinishing()
- Could not find method
- @provides @binds 차이
- Today
- Total
개발관련일지
안드로이드 위도경도를 이용해 구글 Geocoder로 국내주소 구하기 본문
위도경도를 지오코더로 이용해서 시 , 구 , 동 만 주소만 가져올려고 했었다.
예제는 아래와 같은 코드를 긁어서 사용했다.
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
andro-jinu.tistory.com/entry/android1
'개발기록 > 안드로이드' 카테고리의 다른 글
안드로이드 뷰의 터치이벤트 순서(touch event ) (0) | 2021.07.07 |
---|---|
안드로이드 캔버스에 도형(원) 생성하고 움직이기 (0) | 2021.05.29 |
안드로이드 java] dual/multi thumbs seekbar -> RangeSlider를 이용해 만들기 (0) | 2021.01.03 |
AND ] 안드로이드 레트로핏 사용하기 (0) | 2020.05.27 |
AND ] 레트로핏 사용하기전 찾아본것들 (0) | 2020.05.25 |