프로젝트 배경
[해결하려는 문제]
기존 상권 정보 서비스는 데이터가 분산되어 있고, 지도 위에서 직관적으로 탐색하기 어려웠습니다. 특정 지역의 업종별 경쟁 현황, 주변 유동인구 시설, 상권 밀집도를 파악하려면 여러 사이트를 돌아다녀야 했습니다. 본 프로젝트는 전국 상권 데이터를 하나의 지도에 통합하여 직관적인 탐색 경험을 제공하는 것을 목표로 했습니다.
[달성하고자 한 목표]
1. 직관적 탐색 - 지도 클릭만으로 해당 위치의 상권 현황 즉시 파악
2. 통합 데이터 - 점포, 주변 시설, 인구 통계를 한 화면에서 확인
3. 빠른 성능 - 수만 개 점포 데이터를 클러스터링으로 최적화하여 즉시 렌더링
4. 크로스 플랫폼 - 웹과 Flutter 앱에서 동일한 사용자 경험 제공
기존 상권 정보 서비스는 데이터가 분산되어 있고, 지도 위에서 직관적으로 탐색하기 어려웠습니다. 특정 지역의 업종별 경쟁 현황, 주변 유동인구 시설, 상권 밀집도를 파악하려면 여러 사이트를 돌아다녀야 했습니다. 본 프로젝트는 전국 상권 데이터를 하나의 지도에 통합하여 직관적인 탐색 경험을 제공하는 것을 목표로 했습니다.
[달성하고자 한 목표]
1. 직관적 탐색 - 지도 클릭만으로 해당 위치의 상권 현황 즉시 파악
2. 통합 데이터 - 점포, 주변 시설, 인구 통계를 한 화면에서 확인
3. 빠른 성능 - 수만 개 점포 데이터를 클러스터링으로 최적화하여 즉시 렌더링
4. 크로스 플랫폼 - 웹과 Flutter 앱에서 동일한 사용자 경험 제공
프로젝트 성과
웹/앱 크로스 플랫폼 지원
모바일웹과 PC웹은 물론 Flutter 앱 내에서 동일한 지도 기능 제공
2주 내 Full-Stack 서비스 런칭
프론트엔드, 백엔드, PostGIS 공간쿼리, Flutter 연동까지 2주 만에 개발 완료
마커 렌더링 & API 응답속도 최적화
서버/클라이언트 클러스터링을 통해 14,000개 점포를 1,000개 마커로 축소, 지도 렌더링 성능 대폭 향상
카운트/마커 2단계 병렬 로딩 및 캐싱을 통한 체감 검색 속도 개선
카운트/마커 2단계 병렬 로딩 및 캐싱을 통한 체감 검색 속도 개선
핵심 기능

하이브리드 클러스터링
서버에서 20m 반경 1차 클러스터링 후 클라이언트에서 줌 레벨별 재클러스터링, 대용량 마커 최적화

주변 시설 분석
PostGIS ST_DWithin으로 반경 내 7개 카테고리 시설 조회, 30분 TTL 캐싱 적용
진행 단계
요구사항 정의 및 설계
2025.11.
API 엔드포인트 설계, 카테고리 3depth 구조 정의, PostGIS 스키마 설계
백엔드 API 개발
2025.11.
FastAPI 기반 공공데이터 API 구현, 클러스터링 알고리즘, 자동완성 통합 쿼리 개발
프론트엔드 구현
2025.11.
Naver Maps API 연동, 모듈화 구조 설계, 반응형 UI 및 모바일 패널 구현
성능 최적화 및 배포
2025.12.
클러스터링 최적화, 캐싱 적용, Flutter 앱 연동, 프로덕션 배포 완료
프로젝트 상세
1. 프로젝트 개요
전국 상권 데이터를 지도 위에 시각화하여, 사용자가 원하는 위치의 업종별 점포 분포, 주변 시설, 인구 통계를 한눈에 파악할 수 있는 위치 기반 상권 탐색 서비스입니다. 웹과 Flutter 앱에서 동일한 경험을 제공합니다.
2. 주요 기능
위치 기반 상권 데이터 시각화
- 네이버 지도 API 기반 인터랙티브 맵
- 반경 300m / 500m / 1km 선택 가능 (로그인 시 확장)
- PostGIS 공간 쿼리로 실시간 데이터 조회
3단계 업종 카테고리 필터링
- 대분류 → 중분류 → 소분류 3depth 계층 구조
- 카테고리별 점포 수 실시간 집계
- 브레드크럼 네비게이션으로 직관적 탐색
서버/클라이언트 하이브리드 클러스터링
- 줌 레벨에 따른 20m~100m 반경 클러스터링
- 14,000개 → 4,000개 마커로 최적화
- 클러스터 클릭 시 개별 점포로 확장
주변 시설 통합 조회
- 지하철역, 버스정류장, 대학교, 병원, 아파트, 전통시장, 상권 영역
- 시설별 거리 계산 및 30분 캐싱
통합 자동완성 검색
- 주소, 지하철역, 대학교, 병원, 아파트, 전통시장 통합 검색
URL 파라미터 상태 공유
- Base64 UTF-8 압축으로 현재 지도 상태를 URL로 공유
- 위치, 카테고리, 반경, 표시모드 보존
전국 상권 데이터를 지도 위에 시각화하여, 사용자가 원하는 위치의 업종별 점포 분포, 주변 시설, 인구 통계를 한눈에 파악할 수 있는 위치 기반 상권 탐색 서비스입니다. 웹과 Flutter 앱에서 동일한 경험을 제공합니다.
2. 주요 기능
위치 기반 상권 데이터 시각화
- 네이버 지도 API 기반 인터랙티브 맵
- 반경 300m / 500m / 1km 선택 가능 (로그인 시 확장)
- PostGIS 공간 쿼리로 실시간 데이터 조회
3단계 업종 카테고리 필터링
- 대분류 → 중분류 → 소분류 3depth 계층 구조
- 카테고리별 점포 수 실시간 집계
- 브레드크럼 네비게이션으로 직관적 탐색
서버/클라이언트 하이브리드 클러스터링
- 줌 레벨에 따른 20m~100m 반경 클러스터링
- 14,000개 → 4,000개 마커로 최적화
- 클러스터 클릭 시 개별 점포로 확장
주변 시설 통합 조회
- 지하철역, 버스정류장, 대학교, 병원, 아파트, 전통시장, 상권 영역
- 시설별 거리 계산 및 30분 캐싱
통합 자동완성 검색
- 주소, 지하철역, 대학교, 병원, 아파트, 전통시장 통합 검색
URL 파라미터 상태 공유
- Base64 UTF-8 압축으로 현재 지도 상태를 URL로 공유
- 위치, 카테고리, 반경, 표시모드 보존

PostGIS 공간 쿼리로 실시간 데이터 조회

구글/카카오톡 로그인 연동

반응형 웹 적용 (PC/모바일웹)



