OpenRouteService는 무엇인가요?
직선 최단 거리를 구하는 방법으로 출발지와 목적지의 위도 및 경도로 Haversine 공식을 사용하였지만 일반 도시에서 직선 최단 거리를 따라 목표 지점에 도달하기 위해서는 수많은 길을 따라 이동해야 하는 경우가 훨씬 많습니다.
위와 같은 문제점이 발생함에 따라 OpenRouteService는 지도를 사용 중인 사람들에게 거리로 이동하는 최단 경로를 생성하여 보여줍니다.
직접 최단 경로를 생성하는 경우 여러 고려해야 할 사항들과 함께 새로운 공식 또한 필요하지만 이번 글은 OpenRouteService의 API를 이용하여 최단 경로를 생성하고, 그것을 OpenStreetMap에 출력하는 방식으로 진행합니다.
API 사용을 위한 개인 Key 발급
개인 Key 발급을 위하여 OpenRouteService에 회원가입이 필요합니다. 사이트는 영문입니다.
이후 EMAIL로 도착한 인증 링크를 클릭합니다.
OpenRouteService를 사용하여 최단 경로 가져오기
GET 또는 POST 방식으로 가져올 수 있는 API 중 하나를 선택합니다. GET 방식으로 받아오는 경우 메타데이터가 포함된 JSON을 반환하며, POST 방식으로 받아오는 경우 일반 JSON을 반환합니다. 경로가 복잡하지 않은 경우 GET 방식으로도 충분하지만, 경로가 복잡해지고 변수가 많아지는 경우 POST 방식을 사용해야 합니다.
HTML
<script>
let request = new XMLHttpRequest();
request.open('POST', "https://api.openrouteservice.org/v2/directions/driving-car");
request.setRequestHeader('Accept', 'application/json, application/geo+json, application/gpx+xml, img/png; charset=utf-8');
request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Authorization', 'your-api-key');
request.onreadystatechange = function () {
if (this.readyState === 4) {
console.log('Status:', this.status);
console.log('Headers:', this.getAllResponseHeaders());
console.log('Body:', this.responseText);
}
};
// 서울시청과 롯데타워의 좌표
const body = '{"coordinates":[[126.97794509999994, 37.5662952],[127.1006637, 37.5124628]]}';
request.send(body);
</script>

INAS의 블LOG에 오신 것을 환영합니다