처음에는 너무 신기했다. 내가 있는 위치를 좌표값으로 어떻게 가져오지??
주위에 있는 유/무선 공유기, 휴대전화 기지국, 각종 네트워크 장비들로부터 획득한 위치 정보 데이터를 사용해서 자신의 위치를 계산해준다고 한다. 그래서 내가 있는 곳의 네트워크 또는 통신 상태에 따라서 위치 정보가 부정확할 수 있다고 합니다. 물론 단말기에 GPS 모듈이 있는 경우에는 비교적 정확할 것이다.
아래는 geolocation을 사용하는 방법이다.
내 위치를 좌표값으로 가져오기 위해서 위와 같은 함수를 불러온다. 그냥 복붙해서 사용하면된다.
navigator.geolocation.getCurrentPosition(success, error, options);
위의 (success, error, options) 세 가지 인자값을 아래와 같이 정의해주면 된다. 이 부분은 상황에 맞게 바꾸어 써도 된다.
//아래는 네비게이터를 실행할 때, 넣어주는 옵션
const options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0,
};
//내 위치를 불러오는 것에 성공했을 때, 실행되는 함수
function success(position) {
//현재 위치를 state값으로
SetMyaddress({
latitude: position.coords.latitude,
longitude: position.coords.longitude,
});
}
//불러오지 못했을 때 실행되는 함수.
function error(err) {
console.warn("ERROR(" + err.code + "): " + err.message);
}
아래는 내 위치를 좌표값으로 불러오는 전체 코드이다.
const options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0,
};
//내 위치를 불러오는 것에 성공했을 때 , 실행되는 함수
function success(position) {
//현재 위치를 state값으로
SetMyaddress({
latitude: position.coords.latitude,
longitude: position.coords.longitude,
});
}
//불러오지 못했을 때 실행되는 함수.
function error(err) {
console.warn("ERROR(" + err.code + "): " + err.message);
}
useEffect(()=>{
navigator.geolocation.getCurrentPosition(success, error, options);
},[])
첫 랜더링시에, useEffect를 실행하여 내 위치의 좌표값을 Myaddress라는 state값에 넣어준다.
-내 위치의 좌표값을 알아내어 찾고자 하는 주소의 좌표값 사이의 거리를 계산해 가까운 순서대로 나열할 수 있다.
아래는 좌표값을 다루는 라이브러리 geolib이다.
https://www.npmjs.com/package/geolib
'React' 카테고리의 다른 글
CSS 모달창을 만들어보자구나! (0) | 2022.11.18 |
---|---|
react-hook-form 사용기 (0) | 2022.11.15 |
리액트 제어컴포넌트와 비제어 컴포넌트 (0) | 2022.11.14 |
useEffect() 가 뭐꼬? (0) | 2022.10.08 |
리액트를 시작하는 첫 걸음 (0) | 2022.09.29 |