반응형
1. expo-location 다운
expo install expo-location
2. expo-location 사용법
import * as Location from "expo-location";
export default function App() {
const [location, setLocation] = useState();
const [ok, setOk] = useState(true);
const ask = async () =>{
const permission = await Location.requestForegroundPermissionsAsync();
console.log(permission);
}
useEffect(()=>{
ask();
},[]);
}
//결과
{"canAskAgain": true, "expires": "never", "granted": true, "status": "granted"}
그리고 앱에서 단 1회 위치 정보를 알려주겠냐? 라는 안내 alert가 나온다.
permission 변수 안에 granted:true라는 값이 있는데 이를 이용해줄 것이다.
const ask = async () =>{
const {granted} = await Location.requestForegroundPermissionsAsync();
// console.log(permission);
if(!granted){
setOk(false);
}
const location = await Location.getCurrentPositionAsync({accuracy:5});
console.log(location);
}
//결과
{"coords": {"accuracy": 21.326272475591527, "altitude": 51.562021255493164, "altitudeAccuracy": 7.4506354331970215, "heading": -1, "latitude": 36.354013417355354, "longitude": 127.34691741726688, "speed": -1}, "timestamp": 1693658307630.244}
getCurrentPositionAsync를 이용해 유저의 현재 경도와 위도를 받아온다.
그럼 이 경도와 위도를 이용해서 지도 상에서 유저가 어디 위치해있는지 알아내자.
const ask = async () =>{
const {granted} = await Location.requestForegroundPermissionsAsync();
// console.log(permission);
if(!granted){
setOk(false);
}
const {coords:{latitude, longitude}} = await Location.getCurrentPositionAsync({accuracy:5});
const location = await Location.reverseGeocodeAsync({latitude, longitude}, {useGoogleMaps:false});
console.log(location);
}
//결과
[{"city": "인천광역시", "country": "대한민국", "district": "논현동", "isoCountryCode": "KR", "name": "주소는 비밀이지롱", "postalCode": "우편번호 비밀이지롱", "region": "인천광역시", "street": "논현동", "streetNumber": "길번호 비밀이지롱", "subregion": null, "timezone": "Asia/Seoul"}]
여기서 city결과만 가져오고 싶다면,
array이기 때문에 locatio[0].city라고 가져오면 된다.
반응형
'FE > react-native' 카테고리의 다른 글
DropDownPicker 속성 파헤치기 (0) | 2023.10.02 |
---|---|
react native expo 버전에서 아이콘 패키지 써보기 (0) | 2023.09.03 |
react-native 로딩바 적용해보기 (0) | 2023.09.03 |
react-native에서 open weather api를 이용해 날씨 정보 가져오기 (0) | 2023.09.02 |
react native는 기본 flex box 기반이다. (0) | 2023.09.02 |