티스토리 뷰

expo는 리액트 네이티브를 개발을 지원하는 강력한 오픈 소스 플랫폼이다.

리액트 네이티브보다 더 많고 간편한 API들을 지원하니 적절하게 설치해서 가져다 쓰면 개발이 편해진다.

 

expo-location은 그것의 일종으로, 리액트 네이티브의 geolocation보다 다양한 기능을 지원하는 API이다.

사용을 위해선 설치하고 import 해주어야 한다.

 

expo install expo-loacation
import * as Location from "expo-location"

 

 

레퍼런스를 보면 다양한 기능을 지원한다.

그중에서 날씨앱에 활용하는 것은 두 가지 정도가 있다.

(1) 위치정보 사용하도록 사용자에게 허가 받기 - Location.requestPermissionsAsync()

Location.requestPermissionsAsync()

이 함수를 호출하면 앱 내에서 사용자에게 위치사용에 대한 허가를 요청한다.

요청을 허가할 경우 Location.getCurrentPositionAsync() 으로 사용자의 gps정보를 받아올 수 있게 된다.

요청을 거절할 경우 자바스크립트 에러를 발생시킨다.

그래서 Location.requestPermissionsAsync() 는 try-catch문과 함께 사용한다.

+ 뒤에 붙은 Async를 보면 예상할 수 있겠지만 비동기처리를 해주어야 한다(사용자가 언제 허가를 할지 모르니)

 

(2) 허가받은 뒤 사용자 위치정보 받아오기 

const {coords} = await Location.getCurrentPositionAsync()

역시 Async가 붙었으니 비동기처리를 해주어야 한다.

이 함수는 호출하면 사용자의 위치를 프로미스로 반환한다. 

받아오는 정보는 위도, 경도, 속도 등이 있는데 날씨 api와 연계할 때는 latitude(위도), longitude(경도)만을 사용할 예정이다.

 

 

 

expo-location의 레퍼런스주소는 다음과 같다.

https://docs.expo.io/versions/v38.0.0/sdk/location/

 

Location - Expo Documentation

heading (number) -- Horizontal direction of travel of this device, measured in degrees starting at due north and continuing clockwise around the compass. Thus, north is 0 degrees, east is 90 degrees, south is 180 degrees, and so on.

docs.expo.io

댓글