
HTML5에서 부터 제공되는 API입니다.
Geolocation API는 유저 동의 하에
웹 어플리케이션에서 위치 정보에 접근할 수 있는 API입니다.
navigator.geolocation
을 통해 Geolocation API에 접근할 수 있어요.
해당 API의 진입점이고, Geolocation 객체 인스턴스를 리턴해요.
위치 정보를 가져오는 방식은 2가지 다른 메서드로 제공돼요.
(1) 장치의 현재 위치 가져오기 (일시적) :
Geolocation.getCurrentPosition(param1, optionalParam2, optionalParam3)
(2) 기기의 위치가 바뀔때마다 새로운 위치 사용 (위치 바뀔때마다 등록된 함수 호출) :
Geolocation.watchPosition(param1, optionalParam2, optionalParam3)
두개 메서드의 매개변수는 3개로 동일해요.
(콜백 이름은 이해를 돕기 위해 임의로 작성했습니다 🤩)
매개변수1 onSuccess 콜백 (필수) - 위치 정보를 성공적으로 가져왔을 때, 위치 데이터를 담은 GeolocationPosition 객체만을 매개변수로 해당 콜백을 호출해줘요!
매개변수2 onError 콜백 (선택) - 위치 정보 가져오기에 실패했을 때, 실패 원인을 담은 GeolocationPositionError 객체를 매개변수로 해당 콜백을 호출합니다.
매개변수3 객체 (선택) - 위치 정보 회수를 위해 사용할 옵션을 3가지 지정할 수 있어요.
Geolocation 인터페이스는 Navigator 객체의 Geolocation속성으로 접근 가능합니다.
(*Navigator 인터페이스는 window.navigator read-only property(object)입니다. user agent의 상태 및 identity 정보를 제공합니다.)
Geolocation 인터페이스는 어떤 속성 및 메서드도 상속하지 않습니다.
웹 페이지에서 위치 정보에 접근을 시도하면 유저에서 알림을 보내고 권한 허용 여부에 대해 묻습니다.
Geolocation 인터페이스에서 제공하는 메서드는 3가지 입니다.
Geolocation.getCurrentPosition(param1, optionalParam2, optionalParam3)
Geolocation.watchPosition(param1, optionalParam2, optionalParam3); //watchId를 return합니다.
Geolocation.clearWatch(watchId); //watchPostion에서 return된 watchId를 매개변수로 넣어줍니다.
Geolocation.getCurrentPosition(successCallback, optionalErrorCallback, options) //options에 관해서는 1번 - 매개변수3을 확인해주세요.
Geolocation.watchPosition(successCallback, optionalErrorCallback, options) //options에 관해서는 1번 - 매개변수3을 확인해주세요.
3.Geolocation.clearWatch() 메서드
Geolocation.clearWatch(id)
let watchId = 0;
function success(pos) {
const crd = pos.coords;
console.log("success", crd);
navigator.geolocation.clearWatch(watchId);
}
function error(err) {
console.error(`ERROR(${err.code}): ${err.message}`);
}
const options = {
enableHighAccuracy: false,
timeout: 5000,
maximumAge: 0,
};
watchId = navigator.geolocation.watchPosition(success, error, options);
주어진 시간(default는 Infinity)안에 유저 기기의 위치 정보를 알려줍니다.
위치정보는 Coordinates(en-US) 객체 (read-only)로 표현됩니다.
navigator.getCurrentPosition((postition) => {
console.log('위치정보 활용 성공');
alert(position.coords.latitude, position.coords.longtitude)
}, onError, optionsObject)

출처