본문 바로가기

flutter앱개발과정

위치 검색 앱 - 트러블 슈팅(위도 경도로 주소받아왔지만 네이버 API검색 결과가 없음)

- 주소는 나왔는데 네이버 검색 결과가 없을 때

위도/경도로 주소를 잘 받아왔고, 네이버 지역 검색 API도 붙였는데... 검색 결과가 비어 있음! 아무것도 안 뜸!

❗ 문제 상황

  • VWorld API를 통해 주소를 잘 받아옴
  • 서울특별시 중구 태평로1가 31
  • 하지만 네이버 지역 검색 API 호출 결과는 빈 배열 []
  • 화면에는 아무것도 안 나타남 (리스트가 비어 있어서)

원인

네이버 검색 API는 도로명 주소보다 '장소 이름' 중심으로 작동합니다.

예를 들어, 스타벅스, 서울역, 강남역 같은 상호명/지명에는 잘 작동하지만, 서울특별시 중구 태평로1가 31 같은 정확한 주소로는 검색 결과가 없을 수 있습니다.


✅ 해결 방법

1. 주소를 '시 + 구' 정도로 잘라서 검색어로 사용하기

String fullAddress = "서울특별시 중구 태평로1가 31";
String keyword = fullAddress.split(" ").take(2).join(" "); // → '서울특별시 중구'
await ref.read(locationProvider.notifier).search(keyword);

→ 이렇게 하면 장소 밀집 지역 단위로 검색되어 결과가 뜰 확률이 매우 높아집니다.

2. 실제 테스트 로그 예시

flutter: 내 주소: 서울특별시 중구 태평로1가 31
flutter: 네이버 검색 결과 : []

→ 태평로1가 31은 건물 주소라서 검색 결과가 없던 것

→ 검색어를 서울 중구로 줄이자 결과가 나옴


✅ 코드 예시 (searchByLocation 함수 내 적용)

Future<void> searchByLocation(WidgetRef ref) async {
  try {
    final position = await getCurrentPosition();
    final address = await getAddressFromLatLng(position.latitude, position.longitude);

    // 주소를 일부만 검색어로 사용
    final keyword = address.split(" ").take(2).join(" ");
    await ref.read(locationProvider.notifier).search(keyword);

  } catch (e) {
    print('위치 기반 검색 실패: $e');
  }
}

✅ 마무리

  • 네이버 검색 API는 장소 중심이기 때문에 주소 그대로 넣으면 결과가 없을 수 있습니다.
  • 시 + 구 정도로 줄여서 검색하면 결과가 잘 나옵니다.
  • 검색 결과가 비어도 앱은 오류가 없으니, 디버깅이 더 어렵게 느껴졌습니다.