웹·모바일 앱에서 버스, 지하철, 기차 등 대중교통 수단을 이용한 경로 안내를 제공하려면 travelMode: "TRANSIT"을 사용해야 합니다. 일반 드라이브나 도보 경로와는 요청·응답 방식이 조금 다르므로, 이 가이드에서 단계별 방법과 주의사항을 살펴보겠습니다.
1. 대중교통 경로 vs 다른 경로 차이
| 구분 | 기타 이동수단 | 대중교통 이동수단 | 
|---|---|---|
| 중간 웨이포인트 지원 | 가능 | 불가능 | 
| 교통 회피 옵션 (톨·고속도로·페리) | 지원 | 미지원 | 
| 트래픽 반영 | 지원 | 미지원 | 
| routingPreference | TRAFFIC_AWARE 등 다양하게 지정 가능 | TransitPreferences만 지정 가능 | 
| 응답 필드 | steps, polyline 등 | transitDetails, stepsOverview 등 대중교통 메타데이터 포함 | 
2. 요청 전제 조건
- travelMode를 반드시- "TRANSIT"으로 설정
- 중간 웨이포인트(intermediateWaypoints) 지정 불가
- 트래픽, 톨회피 등 routeModifiers옵션 미지원
- routingPreference에는- transitPreferences만 지정 가능 (예:- LESS_WALKING,- FEWER_TRANSFERS)
3. 대중교통 경로 요청 단계
- 출발지(origin)와 도착지(destination) 설정
- travelMode: "TRANSIT"지정
- 필드 마스크(X-Goog-FieldMask)로 필요한 응답 필드 지정
- 선택: 대중교통 선호도 설정 (transitPreferences)
4. 추천 응답 필드 요청
| 요청 정보 | 필드 마스크 예시 | 
|---|---|
| 모든 대중교통 세부정보 | routes.legs.steps.transitDetails | 
| 걸음 요약 | routes.legs.stepsOverview | 
| 각 단계 시작/종료 위치 | routes.legs.steps.startLocation, routes.legs.steps.endLocation | 
| 요금 정보 | routes.travelAdvisory.transitFare | 
5. curl 요청 예시
curl -X POST 'https://routes.googleapis.com/directions/v2:computeRoutes' \
  -H 'Content-Type: application/json' \
  -H 'X-Goog-Api-Key: YOUR_API_KEY' \
  -H 'X-Goog-FieldMask: routes.legs.steps.transitDetails,routes.travelAdvisory.transitFare' \
  --data-raw '{
    "origin": {
      "location": { "latLng": { "latitude": 37.5665, "longitude": 126.9780 } }
    },
    "destination": {
      "location": { "latLng": { "latitude": 37.5512, "longitude": 126.9882 } }
    },
    "travelMode": "TRANSIT",
    "transitPreferences": {
      "allowedTravelModes": ["BUS","SUBWAY"],
      "routingPreference": "LESS_WALKING"
    }
  }'6. 응답 예시
{
  "routes": [
    {
      "legs": [
        {
          "steps": [
            {
              "travelMode": "WALK",
              "distanceMeters": 200,
              "duration": "180s",
              "polyline": { "encodedPolyline": "abcd…" }
            },
            {
              "travelMode": "TRANSIT",
              "distanceMeters": 5000,
              "duration": "1200s",
              "transitDetails": {
                "line": {
                  "vehicle": { "type": "SUBWAY" },
                  "shortName": "2호선"
                },
                "departureStop": { "name": "시청역" },
                "arrivalStop": { "name": "을지로입구역" }
              },
              "polyline": { "encodedPolyline": "wxyz…" }
            },
            {
              "travelMode": "WALK",
              "distanceMeters": 300,
              "duration": "240s",
              "polyline": { "encodedPolyline": "mnop…" }
            }
          ]
        }
      ],
      "travelAdvisory": {
        "transitFare": { "currency": "KRW", "value": 1350 }
      }
    }
  ]
}7. 주의사항 및 팁
- 대중교통 경로는 중간 웨이포인트를 지원하지 않으므로, 여러 정거장을 경유하려면 개별 요청을 연속으로 호출하세요.
- transitPreferences.allowedTravelModes로 원하는 대중교통 유형만 필터링할 수 있습니다.
- 요금 정보(transitFare)는 API가 해당 정보를 제공할 수 있는 경우에만 반환됩니다.
Google 지도 Routes API의 대중교통 경로 기능을 활용하면, 복잡한 환승 정보와 도보 구간을 포함한 상세 내비게이션을 제공할 수 있습니다.
'개발 > 구글지도' 카테고리의 다른 글
| 구글 지도 API로 실시간 경로 계산하기: Compute Routes (1) | 2025.06.05 | 
|---|---|
| 구글 지도 Routes API 중간 경유지 설정: Intermediate Waypoints (0) | 2025.06.04 | 
| 구글 지도 Routes API로 짧은 거리 경로 계산하기: Shorter Distance Routes (0) | 2025.06.02 | 
| 구글 지도 Routes API 대체 경로 요청하기: Alternative Routes (0) | 2025.06.01 | 
| 구글 지도 Routes API 친환경 경로(Eco Routes) 사용 방법 (0) | 2025.05.31 | 
 
				