안드로이드
[안드로이드] GPS 현재 좌표값(위도,경도) 으로 주소정보(시도,구군) 얻기
http://portfolio.wonpaper.net
2021. 3. 25. 02:55
GPS 안드로이드 개발 작업을 하는중 현재 GPS 좌표값을 얻었는데, 이를 바탕으로 바로 서울특별시 강남구 이런식으로 주소정보를 바로 얻어오고 싶을때 아래 소스처럼 분석하고 정리해 보았다.
일단 정답 소스는 안드로이드 API 에서도 제공을 하고 있었다.
바로 Geocoder 였다.
developer.android.com/reference/android/location/Geocoder
그중에서 getFromLocation 메소드가 바로 그것이다.
현재 내 GPS 정보를 아래와 같이 얻었다.
double latitude = 35.8565254;
double longitude = 128.6090332;
그리고, 아래의 소스처럼 안드로이드 코딩 소스를 돌리면
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
|
double latitude = 35.8565254;
double longitude = 128.6090332;
Geocoder geocoder = new Geocoder(this);
List<Address> gList = null;
try {
gList = geocoder.getFromLocation(latitude,longitude,8);
} catch (IOException e) {
e.printStackTrace();
Log.e(TAG, "setMaskLocation() - 서버에서 주소변환시 에러발생");
// Fragment1 으로 강제이동 시키기
}
if (gList != null) {
if (gList.size() == 0) {
Toast.makeText(getContext(), " 현재위치에서 검색된 주소정보가 없습니다. ", Toast.LENGTH_SHORT).show();
} else {
Address address = gList.get(0);
String sido = address.getAdminArea(); // 대구광역시
String gugun = address.getSubLocality(); // 수성구
}
}
|
cs |
getFromLocation 인자중에 3번째 인자를 나는 8로 넉넉하게 설정했다. (api 상으로는 1 ~ 5개 정도를 추천하고있다.)
디버깅을 돌리고, 결과값을 찍어봤다.
Address[addressLines=[0:"대한민국 대구광역시 수성구 수성1가동 255-3"],feature=255−3,admin=대구광역시,sub-admin=null,locality=null,thoroughfare=수성1가동,postalCode=706-031,countryCode=KR,countryName=대한민국,hasLatitude=true,latitude=35.856700499999995,hasLongitude=true,longitude=128.6122941,phone=null,url=null,extras=null]
Address[addressLines=[0:"대한민국 대구광역시 수성구 수성1가동 명덕로75길"],feature=명덕로75길,admin=대구광역시,sub-admin=null,locality=null,thoroughfare=수성1가동,postalCode=706-031,countryCode=KR,countryName=대한민국,hasLatitude=true,latitude=35.8557503,hasLongitude=true,longitude=128.6119429,phone=null,url=null,extras=null]
Address[addressLines=[0:"대한민국 대구광역시 수성구 수성동1가"],feature=706-031,admin=대구광역시,sub-admin=null,locality=null,thoroughfare=수성동1가,postalCode=706-031,countryCode=KR,countryName=대한민국,hasLatitude=true,latitude=35.856094,hasLongitude=true,longitude=128.6097148,phone=null,url=null,extras=null]
Address[addressLines=[0:"대한민국 대구광역시 수성구 수성1가동"],feature=수성1가동,admin=대구광역시,sub-admin=null,locality=null,thoroughfare=수성1가동,postalCode=706-031,countryCode=KR,countryName=대한민국,hasLatitude=true,latitude=35.85635440000001,hasLongitude=true,longitude=128.6105555,phone=null,url=null,extras=null]
Address[addressLines=[0:"대한민국 대구광역시 수성구"],feature=수성구,admin=대구광역시,sub-admin=null,locality=null,thoroughfare=null,postalCode=null,countryCode=KR,countryName=대한민국,hasLatitude=true,latitude=35.8582435,hasLongitude=true,longitude=128.6306086,phone=null,url=null,extras=null]
Address[addressLines=[0:"대한민국 대구광역시"],feature=대구광역시,admin=대구광역시,sub-admin=null,locality=대구광역시,thoroughfare=null,postalCode=null,countryCode=KR,countryName=대한민국,hasLatitude=true,latitude=35.871435399999996,hasLongitude=true,longitude=128.60144499999998,phone=null,url=null,extras=null]
Address[addressLines=[0:"대한민국 대구광역시"],feature=대구광역시,admin=대구광역시,sub-admin=null,locality=null,thoroughfare=null,postalCode=null,countryCode=KR,countryName=대한민국,hasLatitude=true,latitude=35.871435399999996,hasLongitude=true,longitude=128.60144499999998,phone=null,url=null,extras=null]
Address[addressLines=[0:"대한민국"],feature=대한민국,admin=null,sub-admin=null,locality=null,thoroughfare=null,postalCode=null,countryCode=KR,countryName=대한민국,hasLatitude=true,latitude=35.907757,hasLongitude=true,longitude=127.76692200000001,phone=null,url=null,extras=null]
추천하는 대로 다시 인자를 5로 바꾸고 다시 좀더 상세히 디버깅으로 변수값을 찍어보았다.