구글 지도 Routes API 대중교통 경로 매트릭스 : Transit Route Matrix

Google 지도 Routes API의 Compute Route Matrix 기능을 활용하면, 여러 출발지(origin)와 도착지(destination) 조합에 대해 일괄적으로 대중교통 경로 정보를 계산할 수 있습니다. 버스, 지하철, 기차 등 해당 지역의 대중교통 수단을 반영한 거리·소요 시간은 물론, transitFare 옵션을 통해 요금 정보까지 함께 받아볼 수 있습니다.

 

1. Transit Route Matrix란?

  • Compute Route Matrix는 다수의 출발지와 도착지 조합(origin×destination)에 대한 소요 시간(duration)과 거리(distance) 정보를 배열 형태로 반환합니다.
  • travelModeTRANSIT를 지정하면, 대중교통(버스·지하철·기차 등)을 이용한 경로 매트릭스를 생성합니다.
  • 최대 625개의 요소(elements)를 지원하며, 배열의 각 원소는 하나의 출발지-도착지 경로를 나타냅니다.

2. 요청 전제 조건

  • 출발지(origins)도착지(destinations)을 최소 1개 이상 지정해야 합니다.
  • travelModeTRANSIT으로 설정합니다.
  • X-Goog-FieldMask 헤더 또는 ?fields= URL 파라미터로 반환받을 필드를 명시해야 합니다(예: originIndex,destinationIndex,distanceMeters,duration,status,travelAdvisory.transitFare).

3. 예시 요청 (curl)

curl -X POST \
  -H 'Content-Type: application/json' \
  -H 'X-Goog-Api-Key: YOUR_API_KEY' \
  -H 'X-Goog-FieldMask: originIndex,destinationIndex,distanceMeters,duration,status,travelAdvisory.transitFare' \
  --data-raw '{
    "origins": [
      {
        "waypoint": {
          "location": {
            "latLng": { "latitude": 37.420761, "longitude": -122.081356 }
          }
        }
      },
      {
        "waypoint": {
          "location": {
            "latLng": { "latitude": 37.403184, "longitude": -122.097371 }
          }
        }
      }
    ],
    "destinations": [
      {
        "waypoint": {
          "location": {
            "latLng": { "latitude": 37.420999, "longitude": -122.086894 }
          }
        }
      },
      {
        "waypoint": {
          "location": {
            "latLng": { "latitude": 37.383047, "longitude": -122.044651 }
          }
        }
      }
    ],
    "travelMode": "TRANSIT"
  }' 'https://routes.googleapis.com/v2:computeRouteMatrix'

 

4. 응답 예시

[
  {
    "originIndex": 1,
    "destinationIndex": 1,
    "status": "OK",
    "distanceMeters": 8709,
    "duration": "2754s",
    "travelAdvisory": {
      "transitFare": {
        "currencyCode": "USD",
        "units": "2",
        "nanos": 500000000
      }
    }
  },
  {
    "originIndex": 0,
    "destinationIndex": 0,
    "status": "OK",
    "distanceMeters": 530,
    "duration": "394s",
    "travelAdvisory": {
      "transitFare": {}
    }
  },
  {
    "originIndex": 1,
    "destinationIndex": 0,
    "status": "OK",
    "distanceMeters": 2934,
    "duration": "740s",
    "travelAdvisory": {
      "transitFare": {
        "currencyCode": "USD",
        "units": "2",
        "nanos": 500000000
      }
    }
  },
  {
    "originIndex": 0,
    "destinationIndex": 1,
    "status": "OK",
    "distanceMeters": 9883,
    "duration": "3049s",
    "travelAdvisory": {
      "transitFare": {
        "currencyCode": "USD",
        "units": "5"
      }
    }
  }
]

 

5. 필드 마스크 설정 팁

  • originIndexdestinationIndex로 각 요소가 어떤 조합인지 식별할 수 있습니다.
  • distanceMeters, duration 외에 travelAdvisory.transitFare를 포함하면 요금 정보를 함께 받아올 수 있습니다.
  • 불필요한 필드를 제외해 응답 크기와 지연 시간을 최소화하세요.

6. 활용 사례 및 주의사항

  • 택시·배차 서비스: 가장 가까운 대중교통 환승 조합을 빠르게 찾을 때 유용합니다.
  • 물류·배송: 공공 교통을 활용한 마지막 마일 배송 시, 소요 시간과 비용을 일괄 분석할 수 있습니다.
  • 배열 크기(origin×destination)가 625를 초과하지 않도록 주의해야 합니다.
  • 대중교통 경로 매트릭스는 다중 경로(polylines) 정보를 반환하지 않으므로, 상세 구간 안내가 필요할 땐 Compute Routes를 별도 호출해야 합니다.

Compute Route Matrix를 이용한 대중교통 경로 매트릭스는, 다양한 출발지와 도착지 조합에 대한 거리·시간·요금 정보를 한 번에 제공해 주는 강력한 기능입니다.