닷넷/C#
C# 네이버 지도 API(AI Naver-Directions 5)를 이용해서 거리 구하기
FreeBear
2021. 5. 13. 18:25
반응형
단순히 좌표를 가지고 출발지와 도착지의 차익을 구하는 건 실제 사람이 겪는 거리와 다르다.
따라서 거리를 계산하려면 도로상황과 여러 변수들을 생각해서 계산이 이루어져야 한다.
그러나 일개 개인이 그것을 하기에는 많이 어렵다.
그러나 또 한 편으로는 네이버나 카카오에서 충분히 그런 자료들을 만들어놨음을 그들의 플랫폼을 살펴보면 충분히 알 수 있는 사실이다.
(비용만 지불하면 다 되는 세상이다.)
그 중에서 C#에서 네이버 지도 API 중 Directions 5 혹은 15를 사용하는 방법에 대해 기술한다.
* 상세 API 문서는 네이버 클라우드 플랫폼에서 제공 된다.
driving - Directions 5
쿠키 제공 동의 당사는 고객님의 브라우징 기반 정보를 바탕으로 관련 정보 및 광고 제공을 위하여 지식 기반 쿠키를 사용합니다.
api.ncloud-docs.com
/// <summary>
/// 네이버 API 중 Directions 5를 통해서 출발지와 도착지 사이의 거리를 계산한다.
/// </summary>
/// <param name="start">출발지 좌표 / 예시) 127.1058342,37.3597078</param>
/// <param name="goal"> 도착지 좌표 / 예시) 129.0759853,35.1794697</param>
/// <returns>거리 단위는 meter이며, 예시의 좌표로 했을 때 distance는 385111이다.</returns>
private string CalculateDistance(string start, string goal)
{
string distance = "";
try
{
string url = string.Format("https://naveropenapi.apigw.ntruss.com/map-direction/v1/driving?start={0}&goal={1}&option=trafast", start, goal);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add("X-NCP-APIGW-API-KEY-ID", clientId);
request.Headers.Add("X-NCP-APIGW-API-KEY", clientSecret);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string res = reader.ReadToEnd();
JObject jObject = new JObject();
jObject = JObject.Parse(res);
distance = jObject["route"]["trafast"][0]["summary"]["distance"].ToString();
}
}
catch (Exception ex)
{
distance = ex.Message;
}
return distance;
}
위 코드에서는 거리만 구했는데 전체 응답 결과에는 소요 시간과 거리, 예상 유류비, 통행 요금 정보를 제공하고 또한 경로마다 네비게이션처럼 길을 안내해 줄 수 있는 자료까지 있다.
상황에 따라, 본인의 서비스에 따라서 활용하면 좋을 듯 싶다.
반응형