빌드 케이스 #3: 지하철 +/- 방향 표기 데모 앱
공모전 제출용 웹앱. 카카오맵 + 서울 공공데이터 API로 실제 지하철 데이터를 연동한 데모.
프로젝트 개요
- 목적: "모두의 공모전" 제출 - 지하철 노선도 방향 표기 개선안
- 핵심 아이디어: 역번호 증가 방향 =
+, 감소 방향 = -로 플랫폼 방향 안내
- 프로젝트 폴더:
D:\Sites\2026-지하철\
- 앱 폴더:
D:\Sites\2026-지하철\app\
사용 API 정리
1. 카카오맵 API (지도 표시용)
- 역할: 지도 렌더링, 역 마커, 노선 Polyline, 커스텀 오버레이(+/- 표시)
- 무료 한도: 일 30만 호출 (넉넉)
- 가입: https://developers.kakao.com (카카오 계정으로 로그인)
- 키 발급 과정:
- 로그인 → [앱] → [앱 생성] (아이콘 이미지 필요, 128px)
- 앱 생성 시 도메인 등록 필요 (localhost는 안 됨, 실제 사이트 넣기)
- [제품 설정] → [카카오맵] → 사용 설정 ON (필수! 안 하면 지도 안 뜸)
- [앱] → [플랫폼 키] → JavaScript 키 복사 (웹앱용 키)
- JavaScript 키 클릭 → 테스트할 로컬 주소 등록 가능 (
localhost:3000 등)
- 사용할 키: JavaScript 키
- 주의사항:
- 대중교통 길찾기 API는 제공 안 함 (자동차만)
- 지도 위에 마커/선/오버레이 그리기는 완벽 지원
- 카카오 로고/저작권 표시 제거 금지 (약관)
2. 서울 열린데이터 API (역 정보 + 경로 검색 + 실시간 도착)
- 역할: 지하철역 정보, 최단경로 검색, 실시간 열차 도착 정보
- 무료 한도: 일 1,000건 (활용사례 등록하면 무제한)
- 가입: https://data.seoul.go.kr (서울시 통합회원)
- 키 발급 과정:
- 서울시 홈페이지 회원가입
- 로그인 → [이용안내] → [Open API 소개] → 인증키 신청
- 일반 인증키 신청 (역 정보, 경로 검색용)
- 실시간 지하철 인증키 별도 신청 (실시간 도착 정보용)
- 신청 시 이메일, 활용 용도 입력 필요
- 즉시 발급됨
- 인증키 2개 필요:
- 일반 인증키 → 역 정보(OA-15442), 최단경로(OA-22724), 역간거리(OA-12034)
- 지하철 인증키 → 실시간 도착정보(OA-12764)
- 주요 API 목록:
| API 코드 |
기능 |
용도 |
| OA-15442 |
노선별 지하철역 정보 |
역 목록, 역코드 |
| OA-22724 |
최단경로 이동정보 |
출발역→도착역 경로 (최소시간/최단거리/최소환승) |
| OA-12764 |
실시간 도착정보 |
열차 몇 분 후 도착 |
| OA-12601 |
실시간 열차 위치 |
열차 현재 위치 |
| OA-12034 |
역간거리 정보 |
역 사이 거리(km), 소요시간(분) |
3. ODsay API (백업 - 대중교통 길찾기)
- 역할: 출발지→도착지 대중교통 경로 검색 (지하철+버스 통합)
- 무료 한도: 일 1,000건 (6개월)
- 가입: https://lab.odsay.com
- 키 발급 과정:
- 회원가입 → 애플리케이션 등록
- 서비스 플랫폼 환경에서 URI 선택 → 도메인 입력 (프로토콜 제외)
- localhost 등록 안 됨 - 실제 도메인만 가능
- Server 방식은 공인 IP 필요
- 주의: 로컬 개발 테스트가 어려움. 배포 후 실서버에서 사용하거나, 서울 열린데이터 OA-22724로 대체 가능
- 주요 API:
subwayPath - 지하철 전용 경로 검색
searchPubTransPath - 대중교통 통합 길찾기
subwayStationInfo - 역 상세 정보
4. 공공데이터포털 (역 좌표 데이터 - 파일)
- 역할: 역 위경도 좌표, 역번호, 환승 정보 (파일 다운로드)
- 가입: https://www.data.go.kr
- API 키 불필요 (파일 다운로드)
- 핵심 데이터셋:
| 데이터셋 번호 |
내용 |
비고 |
| 15099316 |
1~8호선 역사 좌표(위경도) |
276역, 소수점 6자리 |
| 15013205 |
전국도시철도역사정보 |
1,073역, 역번호/영문명/환승 포함 |
| 15013203 |
전국도시철도노선정보 |
노선 정보 |
API 선택 시 비교 메모
지도 API: 카카오맵 vs 네이버맵
| 항목 |
카카오맵 |
네이버맵 |
| 무료 한도 |
일 30만 |
무료 없음 (2025.7~ 전면 유료) |
| 결제수단 등록 |
불필요 |
필수 (신용카드) |
| 대중교통 길찾기 |
미제공 |
미제공 |
| 커스텀 오버레이 |
완벽 지원 |
완벽 지원 |
| 가입 난이도 |
카카오 계정만 |
네이버 클라우드 + 카드 |
| 결론 |
채택 |
탈락 (무료 없음) |
- 둘 다 대중교통 길찾기 API가 없어서 ODsay 또는 서울 열린데이터로 보충 필요
경로 검색: 서울 열린데이터 vs ODsay
| 항목 |
서울 열린데이터 (OA-22724) |
ODsay (subwayPath) |
| 무료 한도 |
일 1,000건 |
일 1,000건 (6개월) |
| 로컬 테스트 |
가능 |
불가 (도메인 필요) |
| 데이터 범위 |
서울 지하철 |
전국 대중교통 |
| 결론 |
메인으로 사용 |
백업/보조 |
앱 구조 (계획)
카카오맵 JS API ← 지도 표시 (무료 30만/일)
└ 마커, Polyline, ← 역 위치 + 노선 그리기
CustomOverlay ← +/- 방향 표시 오버레이
서울 열린데이터 OA-22724 ← 경로 검색 (최단경로)
서울 열린데이터 OA-12764 ← 실시간 도착 정보
공공데이터포털 15099316 ← 역 좌표 데이터 (파일, 무제한)
공공데이터포털 15013205 ← 역번호+역명+환승 (파일, 무제한)
삽질 로그
카카오맵 앱 등록
- 앱 생성 시 아이콘 이미지 필요 (128px, 250KB 이하)
- 플랫폼 도메인에 localhost는 등록 안 됨 → 실제 도메인 넣기
- JavaScript 키 눌러서 들어가면 테스트 로컬 주소 등록 가능 (
localhost:3000)
ODsay 앱 등록
- URI에 localhost 등록 안 됨 (도메인명만 가능)
- Server 방식은 공인 IP 필요
- 로컬 개발 테스트 불가 → 배포 후 사용하거나 서울 열린데이터로 대체
현재 보유 API 키
| API |
키 종류 |
용도 |
| 카카오맵 |
JavaScript 키 |
지도 표시 |
| 서울 열린데이터 |
일반 인증키 |
역 정보, 경로 검색 |
| 서울 열린데이터 |
실시간 지하철 인증키 |
실시간 도착 정보 |
| ODsay |
API 키 |
대중교통 길찾기 (백업) |
키 값은 보안상 이 문서에 적지 않음. 프로젝트 config 파일에서 관리.
참고 링크