본문 바로가기
Android 개발/지도 Api

Android 의 Location Class와 위도, 경도 이용한 거리 계산

by Developer88 2017. 2. 19.
반응형

Location을 기반으로 하는 앱을 만들경우에 좌표를 이용해서 주소도 얻어야 하지만,

특정 지점과 내위치 간의 거리 등, 좌표간의 거리를 구해야 하는 경우가 생기는데요.

오늘은 어떻게 하면 좌표값으로 거리를 구할 수 있는지 정리해 보려고 합니다.



1. A,B Location을 정의


가장 먼저 필요한 것은, 거리를 재보아야 할 각각의 Location 객체를 구하는 것인데요.

Location 클래스를 이용해서 객체를 생성한 후에,

set메소드를 이용해서, 위도와 경도를 설정해 줄 수 있습니다.


먼저  A와  B위치의 Location을 정해보겠습니다.

(물론, 유저의 스마트폰에서의 위치를 얻어와서 특정 위치와의 거리를 구할 수도 있는데요, 내 위치 표시방법은 아래 링크에서 확인해 주세요.)

>>> Google Map 에서 내 위치 지도에 표시하기 <<<


A와 B의 경도를 임의로 정하고 아래와 같이 A와 B의 Location객체를 생성합니다.

위도와 경도를 set하는 것은 setLatutude와 setLongitude를 이용합니다.




2. DistanceTo() 메소드로 거리구하기


Location 클래스의 distanceTo()메소드를 이용하면,

두 거리 좌표간의 거리를 알 수 있는데요.


distanceTo()의 소스코드를 잠깐 보고 가겠습니다.

미터로 대략의(근접한) 거리를 반환해준다고 하는군요.

그런데, 어느정도의 수준의 정확도인지는 API에 상세하게 나와있지는 않네요.


WGS84 좌표계를 사용하여 정의한다고 되어있는데요.

미국에서 만든, 구글에 적용된 좌표계라고 하는군요.




이제 위에서 만들었던 Location객체A에 객체B를 인자로 주고,

distanceTo메소드를 실행해보겠습니다.




위 코드를 실행해보면 아래와 같은 결과를 얻을 수 있는데요.

좌표A(55,55) 와 좌표B(31,34) 사이에는 무려 297키로 이상의 거리가 있다는 걸 알 수 있습니다.




728x90

댓글