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 좌표 기반으로 정확도 향상 |