단, 주의해야할 사항은 Criteria로 주소를 가져올 경우 번지정보를 가져오는 대신 구 정보를 가져오지 않기 때문에
구 정보를 가져오기 위해서는 야후에서 제공하는 API 를 이용하여 구 정보를 가져와야 한다.
야후 API: https://developer.apps.yahoo.com/wsregapp/index.php
* java 소스
LocationManager locationManager;
String context = Context.LOCATION_SERVICE;
locationManager = (LocationManager)getSystemService(context);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);// 정확도
criteria.setPowerRequirement(Criteria.POWER_LOW); // 전원 소비량
criteria.setAltitudeRequired(false); // 고도 사용여부
criteria.setBearingRequired(false); //
criteria.setSpeedRequired(false); // 속도
criteria.setCostAllowed(true); // 금전적비용
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
double latitude = location.getLatitude(); // 위도
double longitude = location.getLongitude(); // 경도
Geocoder gcK = new Geocoder(getApplicationContext(),Locale.KOREA);
try {
List<Address> addresses = gcK.getFromLocation(latitude, longitude, 1);
StringBuilder sb = new StringBuilder();
if (addresses.size() > 0) {
for (Address addr : addresses) {
sb.append(addr.getMaxAddressLineIndex()).append("********\n");
for (int i=0;i < addr.getMaxAddressLineIndex();i++)
sb.append(addr.getAddressLine(i)).append("<< \n\n");
}
sb.append("===========\n");
Address address = addresses.get(0);
sb.append(address.getCountryName()).append("\n");
sb.append(address.getPostalCode()).append("\n");
sb.append(address.getLocality()).append("\n");
sb.append(address.getThoroughfare()).append("\n");
sb.append(address.getFeatureName()).append("\n\n");
sb.append(tStr).append("\n");
sb.append(tStrLocal).append("\n");
addressString = sb.toString();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List<Address> addresses = gcK.getFromLocation(latitude, longitude, 1);
StringBuilder sb = new StringBuilder();
if (addresses.size() > 0) {
for (Address addr : addresses) {
sb.append(addr.getMaxAddressLineIndex()).append("********\n");
for (int i=0;i < addr.getMaxAddressLineIndex();i++)
sb.append(addr.getAddressLine(i)).append("<< \n\n");
}
sb.append("===========\n");
Address address = addresses.get(0);
sb.append(address.getCountryName()).append("\n");
sb.append(address.getPostalCode()).append("\n");
sb.append(address.getLocality()).append("\n");
sb.append(address.getThoroughfare()).append("\n");
sb.append(address.getFeatureName()).append("\n\n");
sb.append(tStr).append("\n");
sb.append(tStrLocal).append("\n");
addressString = sb.toString();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
* 결과화면
2010/09/08 - [Andro. Dev] - 안드로이드 실시간 네트워크 확인하는 방법 - ConnectivityManager
2010/09/09 - [Andro. Dev] - 안드로이드 getLocalActivityManager & Dialog 사용시 에러 해결방법
2010/09/06 - [Andro. Etc] - Manifest 파일내 permission 정보
2010/09/01 - [Andro. Dev] - 안드로이드 Map ApiKey 발급하는 방법
2010/09/01 - [Andro. Dev] - 안드로이드 MapView에서 줌 배율 문제
2010/10/06 - [Andro. Dev] - 안드로이드 위치 주소정보 가져오는 방법
sb.append("나라명(대한민국):" + address.getCountryName() + "\n");
sb.append("나라코드(KR):" + address.getCountryCode() + "\n");
sb.append("AdminArea:" + address.getAdminArea() + "\n"); // 여기에 경기도 라고 적히고, 서울은 null임
//sb.append("SubAdminArea:null" + address.getSubAdminArea() + "\n"); // 여기는 null
sb.append("Locality:" + address.getLocality() + "\n"); // 여기에 서울시 적힘
//sb.append("SubLocality:null" + address.getSubLocality() + "\n"); // 여기는 null
sb.append("주요간선도로(동):" + address.getThoroughfare() + "\n"); // 여기에 도로 안적히고 호계동/서교동 적힘
//sb.append("세부도로:" + address.getSubThoroughfare() + "\n"); // 여기는 null
sb.append("FeatureName(번지):" + address.getFeatureName() + "\n"); // 여기는 번지
sb.append("전화번호:" + address.getPhone() + "\n");
sb.append("우편번호:" + address.getPostalCode() + "\n");
단, 한국내 구이름은 AddressLine을 통해서만 가지고 올 수 있다.
sb.append("나라코드(KR):" + address.getCountryCode() + "\n");
sb.append("AdminArea:" + address.getAdminArea() + "\n"); // 여기에 경기도 라고 적히고, 서울은 null임
//sb.append("SubAdminArea:null" + address.getSubAdminArea() + "\n"); // 여기는 null
sb.append("Locality:" + address.getLocality() + "\n"); // 여기에 서울시 적힘
//sb.append("SubLocality:null" + address.getSubLocality() + "\n"); // 여기는 null
sb.append("주요간선도로(동):" + address.getThoroughfare() + "\n"); // 여기에 도로 안적히고 호계동/서교동 적힘
//sb.append("세부도로:" + address.getSubThoroughfare() + "\n"); // 여기는 null
sb.append("FeatureName(번지):" + address.getFeatureName() + "\n"); // 여기는 번지
sb.append("전화번호:" + address.getPhone() + "\n");
sb.append("우편번호:" + address.getPostalCode() + "\n");
단, 한국내 구이름은 AddressLine을 통해서만 가지고 올 수 있다.
댓글 없음:
댓글 쓰기