Gildle 서울 전역 확장 + OSM 나무/공원 통합

서울 전역 보행 그래프 확장

영등포구 시범 데이터(1,616 edges)에서 서울 전체(233,964 edges)로 보행 그래프를 확장했다.

항목 변경 전 변경 후
보행 그래프 범위 영등포구 서울 전체
엣지 수 1,616 233,964
노드 수 — 164,740

OSM 나무/공원 데이터 통합

Overpass API로 서울 전역 나무·공원 데이터를 수집하고 격자 인덱스 기반 근접 매칭으로 환경 점수를 재산정했다.

데이터 수량 매칭 방식
나무 (tree=*) 6,851개 80m 반경 격자 매칭
공원 (leisure=park) 3,053개 150m 반경 근접 매칭 (+0.4 부스트)

점수 변화

지표 변경 전 변경 후
tree_score > 0 엣지 686 12,219 (18배)
dog_friendly > 0.3 엣지 — 76,109

줌 레벨별 서버 사이드 간소화

서울 전체 23만 엣지를 줌 레벨에 따라 격자 기반 샘플링으로 서버에서 간소화한다. 점수 높은 엣지는 샘플링에서 보존한다.

줌 엣지 수 비율
12 4,682 2%
13 13,956 6%
14 42,194 18%
15+ 233,816 100%

경로 API 좌표 응답

POST /api/gildle/routes 응답에 coordinates 배열을 추가했다. 프론트에서 경로 폴리라인 렌더링에 사용한다.

{
  "path": ["node_a", "node_b", "node_c"],
  "coordinates": [[37.52, 126.93], [37.52, 126.94], [37.53, 126.94]]
}

기존 SampleWalkGraphSource 의존성을 제거하고, 엣지의 from/to 좌표를 직접 참조하는 인라인 nearest node 탐색으로 전환했다.

현재 위치 버튼

브라우저 Geolocation API를 활용한 현재 위치 버튼을 추가했다.

  • 버튼 클릭 → 현 위치 획득 → 지도 자동 이동
  • 가장 가까운 노드를 출발점으로 자동 설정
  • 위치 권한 거부 시 에러 메시지 표시

지도 UX 폴리싱

개선 사항 내용
시각화 CircleMarker → Polyline (선 기반 경로 표현)
검색 Nominatim 기반 장소 검색
로딩 뷰포트 bbox + 줌 기반 동적 데이터 로딩
경로 상세 경유 도로·결빙 주의·그늘 양호 구간 표시
nearest node midpoint 기반 → from/to 좌표 기반으로 정확도 향상