마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

android GeoCoding 질문 [closed]

0 추천
 @Nullable
    private Address geoCoding(String addressString) {
        Geocoder geocoder = new Geocoder(getActivity(), Locale.getDefault());
        try {
            List<Address> addresses = geocoder.getFromLocationName(addressString, 10);
            if (addresses != null && !addresses.isEmpty()) {
                return addresses.get(0);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Nullable
    private Address reverseGeoCoding(double latitude, double longitude) {
        Geocoder geocoder = new Geocoder(getActivity(), Locale.getDefault());
        try {
            List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
            if (addresses != null && !addresses.isEmpty()) {
                return addresses.get(0);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    private void fetchAddressInfo() {
        String addressString = searchEdit.getText().toString();
        Address address = geoCoding(addressString);

        if (address != null) {
            double latitude = address.getLatitude();
            double longitude = address.getLongitude();

            Address reverseAddress = reverseGeoCoding(latitude, longitude);
            if (reverseAddress != null) {
                String premises = reverseAddress.getPremises();
                String postalCode = reverseAddress.getPostalCode(); // 우편번호
                String sido = reverseAddress.getAdminArea(); // 시,도
                String gu = reverseAddress.getSubLocality(); // 구
                String dong = reverseAddress.getThoroughfare(); // 동
                String jibunAddress = reverseAddress.getFeatureName(); // 세부주소
                String roadAddress = reverseAddress.getAddressLine(0).replaceFirst("대한민국 ", "");

                String jibun = sido + " " + gu + " " + dong + " " + jibunAddress;

                // 검색 결과를 LocationSearchList 객체로 변환
                LocationSearchList searchResult = new LocationSearchList(postalCode, roadAddress, jibun);

                // locationSearchList에 검색 결과 추가
                ArrayList<LocationSearchList> locationSearchList = new ArrayList<>();
                locationSearchList.add(searchResult);

                // 리사이클러뷰 어댑터에 데이터 세트
                searchAdapter.setLocationSearchList(locationSearchList);
                searchAdapter.notifyDataSetChanged(); // 어댑터에 데이터 변경 알림
                Log.d("Recycler", "아이템 갯수 " + searchAdapter.getItemCount());

                if (searchAdapter.getItemCount() == 0) {
                    searchViewLayout.setVisibility(View.GONE);
                    searchNullLayout.setVisibility(View.VISIBLE);
                } else {
                    searchViewLayout.setVisibility(View.VISIBLE);
                    searchNullLayout.setVisibility(View.GONE);
                }
            } else {
                Toast.makeText(getActivity(), "No detailed address found", Toast.LENGTH_SHORT).show();
            }
        } else {
            Toast.makeText(getActivity(), "No address found", Toast.LENGTH_SHORT).show();
        }
    }

현재 이러한 함수들을 통해 검색한 주소의 좌표를 얻고 얻은 좌표로 역지오코딩을 통해 주소를 얻고 잇습니다.

도로명주소와 우편번호등 기타 데이터는 모두 정상이지만 

 String dong = reverseAddress.getThoroughfare(); //동

이 값만 반환값이 null이 반환되고 있습니다.
 

 

질문을 종료한 이유: naver map api 으로 변경
개린쓰 (680 포인트) 님이 2023년 11월 3일 질문
개린쓰님이 2023년 11월 3일 closed
...