데브허브 | DEVHUB | EP12 - 당근 마켓 앱 만들기 지도 상품 영역 지정(바이브 코딩)EP12 - 당근 마켓 앱 만들기 지도 상품 영역 지정(바이브 코딩)
- 지오해시(GeoHash) 개념 도입: 위도와 경도 같은 2차원 지도 데이터를 1차원 문자열 데이터로 변환하여, 사용자 주변의 특정 반경 내 상품을 효율적으로 검색하고 서버 과부하를 방지하는 기술입니다. 🗺️
- 지오해시 작동 원리: 위도와 경도 값을 이진수 비트값으로 변환하고, 이를 적절히 조합하여 고유한 문자열 해시값으로 만드는 방식으로 작동합니다. 💻
- 해시 길이와 검색 반경: 지오해시 문자열의 길이에 따라 검색 반경이 달라지며, 예를 들어 4자리는 약 10km, 5자리는 약 2.4km, 6자리는 약 0.3km 이내의 상품을 필터링할 수 있습니다. 📏
- 당근마켓 유사 앱 적용: 당근마켓의 3km 이내 검색과 유사하게, 5자리 지오해시를 사용하여 약 2.4km 반경 내 상품을 불러오는 방식으로 앱에 적용합니다. 🥕
- 데이터 모델 및 업로드 변경: Firestore의
Product 모델에 geoHash 필드를 추가하고, 상품 업로드 시 해당 지오해시 값을 함께 저장하도록 코드를 수정합니다. 💾
- 실제 디바이스 테스트 권장: 위치 정보의 정확한 테스트를 위해 에뮬레이터 대신 실제 디바이스에서 상품 업로드 및 검색 기능을 테스트하는 것이 중요합니다. 📱
- 지오해시 기반 상품 필터링 시연: 4자리 지오해시로 검색 시 넓은 범위의 상품이 나타나고, 5자리로 변경 시 더 좁은 반경의 상품만 필터링되어 나타나는 것을 실제 앱에서 확인했습니다. 🔍
- 거리 선택 드롭다운 UI 계획: 사용자가 10km, 2.4km, 0.3km 등 원하는 검색 거리를 선택할 수 있도록 드롭다운 메뉴를 추가하여 지오해시 길이를 동적으로 변경하는 기능을 구현할 예정입니다. 🎯