오늘은 GPS 센서를 이용한 내위치 파악하기 및 자동 운동 경로 만들기를 해볼 것입니다.
해외 어플 중에 "보물찾기" 어플이 인기를 끌었던 적이 있죠. 무작위 위치를 알려주고, 유저가 그 위치로 여행 및 보물 찾기를 하는 어플입니다.
"보물찾기"어플의 경우, 거리가 멀 경우, 10km 이상의 거리를 이동해야 할 수도 있죠.
오늘 만들 어플은 현재 내 위치를 기반으로 약 1km정도 되는 거리 선에서만 랜덤 위치를 생성할 것입니다.
사용 영상
영상을 찍을 때, 제 주소가 너무 적나라하게 나오는게 걱정되서, 일부러 수원 터미널을 위치로 옮겨놨습니다.
영상에 나오는 위치에 대해서는 무시해주시면 감사하겠습니다.
디자인
디자인 구조
디자인 구조에 최상단에 보면 1개가 가려져 있죠? "Screen1"입니다. 크게 신경 안쓰셔도 되요
디자인 속성
속성 밑 컴포넌트 이름을 확인하시고, 표시해둔 부분만 수정하시면 됩니다. 간혹 틀리는 경우도 있으니 이해해주세요.
참고로 디자인은 본인의 개성에 맡게 해주시는 걸 추천합니다.
블록코딩
변수는 2개를 사용했습니다. 1개는 내위치, 1개는 랜덤위치의 값을 저장하기 위함입니다.
앱인벤터에서는 주로 위도, 경도를 이용해서 지도에 표시를 합니다. 그래서 딕셔너리를 이용해서 위도와 경도를 변수에 저장합니다. 참고로, 처음 위도와 경도가 0인 이유는 없으며, 초기값으로 0을 넣어준 것입니다.
스크린이 초기화되면(어플이 실행되면) 지도 안에 있는 마커 2개와 선을 안보이게 해줍니다
내 위치 버튼을 클릭하면, 위치센서를 이용하여 변수에 위도,경도 값을 넣어줍니다.
위치센서의 서비스제공자이름은 network로 해줍니다. 그 이유는 별도로 설정을 안해주면 GPS로 설정이 됩니다. GPS를 사용하면 건물 안에 있을 때, 위치센서가 내 위치를 거의 못 찾습니다. 그래서 network로 변경을 해줘서, 그~나~마 내 위치를 잘 찾도록 변경해줍니다.(network도 완벽하진 않음 ,그래도 변경해주는게 더 잘나옴)
위치센서를 이용하여 내 위치의 위도, 경도를 찾아냈다면 지도에 팬하기를 이용하여 현재 위치로 이동하게 해줍니다.
줌은 지도의 확대 비율이며, 숫자가 클수록 확대가 됩니다. 즉, 숫자가 클수록 더 가까이 보입니다.
그리고, 레이블_내좌표_값에 위도, 경도를 표현합니다
랜덤 위치는 "현재 내 위치 + 랜덤 값"을 지정해줍니다.
현재 내위치 = 변수(내위치) 사용
랜덤 값는 50% 확률(임의의 정수 1~2 = 1 일떄)로 음수, 양수를 지정해줍니다.
(임의의 정수 500~1000) / 100000은 제가 임의의로 만든 값입니다. 직접 수정 및 테스트를 하면서 테스트한 결과, 위와 같이 값을 입력하면 랜덤 위치 거리 값이 약 700 ~ 1300 사이의 값이 나오게 됩니다.즉 랜덤 위치가 현재 위치 기준으로 0.7km ~ 1.3km 사이에 생성이 되게 됩니다.(수정을 원하시면 수정하셔도 됩니다.)
랜덤 위치가 생성이 되면 지도의 위치를 변경해줄 필요가 있습니다. (지도의 위치를 변경 안해주면, 어디에 랜덤 위치가 생성됬는지 알 수가 없다.) 저는 " (내 위치 + 랜덤 위치) / 2 "를 해줘서 지도에서 두 위치를 한번에 볼 수 있게 해주었습니다.
선연결의 문자열좌표는 좌표1(X1, Y1), 좌표2(X2,Y2)가 필요합니다. 즉, 출발과 도착 지점의 좌표가 필요한 것입니다. 그래서 이중 리스트를 이용하여 좌표를 지정했습니다.
좌표1(X1, Y1) = 내위치(위도, 경도)
좌표2(X2, Y2) = 랜덤위치(위도, 경도)
랜덤 위치를 레이블_랜덤좌표_값에 표현해줍니다.
거리차이는 "좌표까지거리계산하기" 블록을 이용하면 간단하게 사용이 가능합니다.
소수로 나타내기를 이용하여 거리차이의 소숫점을 제거합니다.
그 후에 몫과 나머지를 이용하여 거리차이를 km단위로 표현했습니다.(원래는 m단위 기준)
예시)
1. "좌표거리 계산하기" 의 값 = 1300.15332 m
2. "소수로 나타내기" 의 값 = 1300 m
3. "몫" 의 값 = 1 km
4. "나머지" 의 값 = 300 m
5. "텍스트 합치기" = 1.300 km
후기
파이팅😋😋
'앱인벤터 강좌' 카테고리의 다른 글
[앱인벤터 강좌] 요기요,배민 같은 온라인 메뉴판 만들기 (0) | 2022.05.08 |
---|---|
[앱인벤터 강좌] 나만의 암호 메모장 만들기(암호 모르면 못봐) (0) | 2022.04.27 |
[앱인벤터 강좌] 내 위치 자동 기록 어플 만들기 (0) | 2022.04.13 |
[앱인벤터 강좌] 5개 국어 번역기 만들기 (0) | 2022.04.07 |
[앱인벤터] 앱인벤터 만들어 놓은 어플 리스트 (0) | 2022.04.04 |