한국어

Programming

twin 주소복사
조회 수 3090 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

앱인벤터의 센서 중에 LocationSensor는 GPS 좌표와 주소, 속도를 알려줍니다. 이 센서를 이용하여 거리측정기 앱을 만들어보겠습니다. 
 

<그림 1> DistanceChecker 앱의 실행 화면

Start와 Check 두개의 버튼이 있습니다. 그 아래 GPS Read Label이 있는데, 이것은 현재 GPS 값을 표시하는 곳입니다. GPS Accuracy는 현재 GPS의 정확도를 표시합니다. GPS는 오차가 상당합니다. 주변에 가리는 건물이 없는 곳에서는 3~4m 정도, 아파트나 건물이 많은 곳에서는 10m 이상의 오차가 발생합니다. 따라서 거리 오차를 감안하고 사용해야 합니다.

1. GPS Read 에 좌표값이 표시되면(GPS 데이터를 수신하였다는 뜻입니다) 출발점에서 Start 버튼을 누릅니다. 이때의 좌표값이 Start 부분에 표시됩니다.

2. 이때부터 측정하고 싶은 곳으로 이동하면서 Check 버튼을 누르면 그때마다 Check 표시가 추가되면서 GPS 좌표와 출발점으로부터의 거리가 출력됩니다.

디자인 화면은 <그림 2>와 같습니다. 각 컴포넌트들의 배치와 이름을 확인하세요.
 

<그림 2> 디자인 화면
<그림 3> 디자인 화면 중 표시된 부분은 Visible을 해제

앱이 시작되고 GPS 좌표를 받기 전에는 GPS Read와 GPS Accuracy에 "GPS not ready" 라고 표시됩니다. HAStart와 HACheck 및 선을 표시하기 위한 Label6, Label11은 각각 Start와 Check 버튼이 클릭될 때까지는 화면에 보이지 않도록 Visible 속성을 uncheck 합니다.

블록 코딩을 살펴보겠습니다.
 

<그림 4> 블록코딩 1

앱이 실행되면서 LocationSensor의 TimeInterval과 DistanceInterval을 설정합니다. 이 값들은 설정된 거리나 시간 이상이 되어야 LocationChanged 이벤트를 발생시킵니다. 지금은 TimeInterval의 단위는 ms이므로 1초, 거리는 1m로 설정한 것입니다.

LocationSensor가 현재와 다른 GPS 값을 받게되면 LocationChanged 이벤트가 발생합니다. 이때마다 현재 좌표값과 정확도를 표시합니다.
 

<그림 5> 블록코딩 2

이제 Start 버튼이 클릭될 때의 코딩을 작성합니다. 출발점의 위도(Latitude)와 경도(Longitude) 좌표를 StartLat, StartLong으로 저장하기 위해 global variable로 설정합니다. btnStart가 클릭되면 visble 속성을 해제했던 Label6와 HAStart를 visible로 해주고 LocationSensor의 현재 위도, 경도를 표시합니다.
 

<그림 6> Check 버튼의 클릭 이벤트


이제 Check 버튼의 클릭이벤트를 작성합니다. 선을 표시하는 Label11과 HACheck의 visible을 true로 바꾸고 체크 번호와 함께 좌표값과 출발점으로 부터의 거리를 표시합니다.

두개의 GPS 좌표로 부터 거리를 계산하는 공식은 매우 복잡합니다. 그중 두가지를 만들어 보았는데 테스트해 본 결과 가까운 거리까지는 정확하게 같았습니다.

거리 계산하는 두가지 공식을 모두 프로시저로 만들어서 <그림 7>과 <그림 8>에 나타냈습니다. 둘다 Start 지점과  현재 위치의 거리를 계산합니다. 둘 중에 하나만 사용하면 됩니다.

첫번째 계산식은 http://www.appinventor.org/Procedures2 에서 가져왔습니다. 이 곳에서는 단위를 mile로 계산했기 때문에 이를 m로 변환해서 반올림하는 부분만 제가 추가했습니다.
 

<그림 7> GPS 좌표로부터 거리 측정

두번째 계산식은 훨씬 복잡합니다. 잘 보이지도 않네요... ㅎㅎ 
http://hochulshin.com/distance-between-two-coordinates/ 를 비롯한 여러 사이트를 참조했습니다.

<그림 8> GPS 좌표로부터 거리측정

둥그런 지구 위의 위치를 나타내는 위도, 경도로 부터 거리를 계산하는 방법이니 어려울 수 밖에요... 

오늘은 GPS로 부터 거리 계산하는 앱을 만들어보았습니다. 다양한 응용이 가능할 겁니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
51 지도에 내 위치 표시하기  twin 2018.09.14 5742
50 앱인벤터2를 이용한 피아노 어플 제작  twin 2018.08.27 1037
49 앱인벤터2 강좌: fingerFind5 게임  twin 2018.10.12 1737
48 앱인벤터2 강좌 : 숫자 암기 게임  twin 2018.10.12 2286
47 앱인벤터 에뮬레이터 다운 설치  twin 2017.03.26 1663
46 앱인벤터 아두이노 교재  3 twins 2017.03.18 1643
45 앱인벤터 동영상 강좌 app123.kr  twin 2018.09.17 51718
44 앱인벤터 교육사이트  twin 2017.09.28 1083
43 스톱워치 만들기  twin 2018.09.14 7688
42 색상 팔렛트 만들기  twin 2018.09.14 1535
41 문자메시지 보내기  twin 2018.10.12 1794
40 메모장 앱 만들기  twin 2018.10.12 1633
39 드림코드  twin 2017.11.10 841
38 과제알림장 앱 만들기  twin 2018.10.12 2431
37 [앱인벤터]Player(플레이어)를 이용한 I have a dream 앱  twin 2018.08.27 1095
36 [앱인벤터] 카메라와 캔버스, PaintPot 앱  twin 2018.08.27 1322
» [앱인벤터] 위치센서 LocationSensor를 이용한 거리측정기  twin 2018.08.27 3090
34 [앱인벤터] 예제 - 두더지 게임  twin 2018.09.11 11717
33 [앱인벤터] 에뮬레이터, 녹스(nox) 앱플레이어 사용법  twin 2018.08.27 839
32 [앱인벤터] 성적계산기  twin 2018.08.27 1035
Board Pagination Prev 1 2 3 Next
/ 3